4 回答
TA貢獻1790條經驗 獲得超9個贊
任何時候都可以使用數組,使用指針。
定義時,通常只有字符指針,和字符數組指針直接定義。用來表示字符串或字符串數組。
其他一般定義數組。操作時用指針或數組。
其他指針,多半用在參數傳遞,數據結構內部(不確定需要內存的大小,或者鏈表,二叉樹等鏈式結構)的時候。
還有一種是有些函數參數就是指針,這時定義一個指針,來操作傳進來的指針參數比較好。
指針作為參數,有一下幾種用法,
1)當作數組用,用來獲取或設置數組元素。
2)把一個比較長的數據結構傳入函數,只需要一個指針就夠了。
3)傳入變量的地址,用來讀取或修改變量的值,主要是為了修改用。
直接定義一個不指向任何對象的指針,并且也從不給他賦值,沒什么意義;
指針要么指向數組,要么指向變量,要么動態申請內存。
NULL指針,只是一個方便的指針,表示不指向任何對象。
真正有用的還是指向具體對象的指針。
如果定義了一個指針,使用時要讓他指向一個具體對象,當需要他不指向什么對象的時候,給他賦值為NULL;
PS:
C語言,數組名只是一個指針常量而已,離開定義可見處,數組大小的信息就不存在了。
只有定義完全可見的地方,才可以獲得數組的大小。
數組作為函數的參數,和外部引用聲明都不能獲得數組的大小。
參數只能傳遞指針,參數的大小只是指針的大小;
只能看到聲明的地方,獲取數組大小的努力,只能換來錯誤。
void fun1(int a[10]) //<==> void fun1(int a[]) <==>void fun1(int *a)
{
}
void fun2(int [10][10])// <==>void fun2(int a[][10])<==> void fun2(int (*a)[10])
{
}
TA貢獻1794條經驗 獲得超8個贊
個人認為,當你需要某一變量需要一直存在的話,那么程序初始化時就可以直接使用數組之類的;
而當你需要對已存在于內存的某些量做改變時,則適宜使用指針。
這里需要注意的是,使用數組的前提是內存靜態分配,其大小是不可改變的;所以若要求動態分配的話,還是需要使用指針的。希望對你有所幫助。
TA貢獻1848條經驗 獲得超6個贊
數組指針--指向數組的指針,是一個指針,其指向的類型是數組;指針數組--元素為指針的數組,是一個數組,其中的元素為指針。仔細研讀下面的程序:
#include <stdio.h>
int
main(void)
{
int a[2][2] = {{1,2},{3,4}};
int (* p)[2];
char * s[2] = {"hello", "world"};
p = a;
printf("%d, %d, %d, %d\n", (*p)[0], (*p)[1], (*(p+1))[0], (*(p+1))[1]);
printf("%s %s\n", s[0], s[1]);
return 0;
}
- 4 回答
- 0 關注
- 1115 瀏覽
添加回答
舉報
