4 回答

TA貢獻(xiàn)1790條經(jīng)驗 獲得超9個贊
任何時候都可以使用數(shù)組,使用指針。
定義時,通常只有字符指針,和字符數(shù)組指針直接定義。用來表示字符串或字符串?dāng)?shù)組。
其他一般定義數(shù)組。操作時用指針或數(shù)組。
其他指針,多半用在參數(shù)傳遞,數(shù)據(jù)結(jié)構(gòu)內(nèi)部(不確定需要內(nèi)存的大小,或者鏈表,二叉樹等鏈?zhǔn)浇Y(jié)構(gòu))的時候。
還有一種是有些函數(shù)參數(shù)就是指針,這時定義一個指針,來操作傳進(jìn)來的指針參數(shù)比較好。
指針作為參數(shù),有一下幾種用法,
1)當(dāng)作數(shù)組用,用來獲取或設(shè)置數(shù)組元素。
2)把一個比較長的數(shù)據(jù)結(jié)構(gòu)傳入函數(shù),只需要一個指針就夠了。
3)傳入變量的地址,用來讀取或修改變量的值,主要是為了修改用。
直接定義一個不指向任何對象的指針,并且也從不給他賦值,沒什么意義;
指針要么指向數(shù)組,要么指向變量,要么動態(tài)申請內(nèi)存。
NULL指針,只是一個方便的指針,表示不指向任何對象。
真正有用的還是指向具體對象的指針。
如果定義了一個指針,使用時要讓他指向一個具體對象,當(dāng)需要他不指向什么對象的時候,給他賦值為NULL;
PS:
C語言,數(shù)組名只是一個指針常量而已,離開定義可見處,數(shù)組大小的信息就不存在了。
只有定義完全可見的地方,才可以獲得數(shù)組的大小。
數(shù)組作為函數(shù)的參數(shù),和外部引用聲明都不能獲得數(shù)組的大小。
參數(shù)只能傳遞指針,參數(shù)的大小只是指針的大?。?br/>只能看到聲明的地方,獲取數(shù)組大小的努力,只能換來錯誤。
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貢獻(xiàn)1794條經(jīng)驗 獲得超8個贊
個人認(rèn)為,當(dāng)你需要某一變量需要一直存在的話,那么程序初始化時就可以直接使用數(shù)組之類的;
而當(dāng)你需要對已存在于內(nèi)存的某些量做改變時,則適宜使用指針。
這里需要注意的是,使用數(shù)組的前提是內(nèi)存靜態(tài)分配,其大小是不可改變的;所以若要求動態(tài)分配的話,還是需要使用指針的。希望對你有所幫助。

TA貢獻(xiàn)1848條經(jīng)驗 獲得超6個贊
數(shù)組指針--指向數(shù)組的指針,是一個指針,其指向的類型是數(shù)組;指針數(shù)組--元素為指針的數(shù)組,是一個數(shù)組,其中的元素為指針。仔細(xì)研讀下面的程序:
#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 關(guān)注
- 1088 瀏覽
添加回答
舉報