C語言定義數組指針的三種方法
C語言中有一種文法叫做數組指針,就是使用一個指針變量指向一個數組,然後對數組進行通路操作.
下面給出代碼示例定義的方法, 代碼如下:
#include<stdio.h>
int main(){
//定義數組指針的第一種方法
{
printf("=====================================\n");
int (*p)[] = NULL;
int arr[] = {,,,,};
p = &arr;
int num = sizeof(arr)/sizeof(arr[]);
for(int i = ; i < num; i ++){
//printf("%d\n",*p[i]);
//printf("%d\n",p[i]);
printf("%d\n",(*p)[i]);
}
}
//定義數組指針的第二種方法
{
printf("=====================================\n");
typedef int (typeArray)[];
int arr[] = {,,,,};
typeArray *p = NULL;
p = &arr;
int num = sizeof(arr)/sizeof(arr[]);
for(int i = ; i < num; i++){
printf("%d\n",(*p)[i]);
}
}
//定義數組指針的第三種方法
{
printf("=====================================\n");
typedef int (*typeArray)[];
int arr[] = {,,,,};
typeArray p = NULL;
p = &arr;
int num = sizeof(arr)/sizeof(arr[]);
for(int i = ; i < num; i++){
printf("%d\n",(*p)[i]);
}
}
return ;
}
我們通過上面的代碼可知, 這三種方式通過數組指針來通路數組元素——-(*p)[i]
如果printf(“%d\n”,p[i]) 那麼列印的是數組的首元素位址 ,接下來也是位址—–該數組的首位址加上該數組的長度,………. .例如:該數組的元素首位址是10000那麼,接下來的位址是10020, 10040,10060…….
因為進行了p=&arr的指派,而&arr代表整個數組的指派
那麼列印語句printf(“%d\n”,*p[i])列印的是上面所說位址的内容.即10000,10020,10040…… 處的内容