c語言中 int *p[4]和int (*p)[4]在定義和使用方面有什麼區別? O(∩_∩)O謝謝
- 2022-06-18
*p[4]這指標陣列,定義一個數組,裡面存放的是指標。
(*p)[4]定義的是一個指向一維陣列的指標,這是一個指標,p++相當於p的地址相加了1*4
舉例說明:
#include
void main()
{
int a[2][2]={{1,2},{8,9}};
int *p[4],(*q)[2];
q=a;
p[0]=&a[0][0];
p[1]=&a[0][1];
p[2]=&a[1][0];
p[3]=&a[1][1];
for(int i=0;i<4;i++)
printf(“%d\t”,*p[i]);
printf(“\n”);
for(int j=0;j<2;j++,q++)
{printf(“%d\t”,(*q)[j]);
}
printf(“\n”);
}}
輸出的結果是:
指標陣列:1,2,8,9指標陣列中的每個元素都要給其賦予地址,否則出錯
陣列指標:1,9陣列指標只要開始賦值頭地址,之後執行q++是相加維數,所以結果是1,9而不是1,2
//舉例說明:
int *p1[4];//定義指標陣列。這個陣列有四個元素,每個元素都是指向整形變數的指標。
//舉例說明:
int *p1[4];//定義指標陣列。這個陣列有四個元素,每個元素都是指向整形變數的指標。
int (*p2)[4];//定義一個指標變數,指向一行有四個整形元素的行指標;
int a[4];
int b[5][4];
p1[0]=&a[0];p1[1]=&a[1];p1[2]=&a[2];p1[3]=&a[3];//p1的元素分別指向一維陣列a的每一個元素。
p2=b;//p2指向二維陣列b的第一行。
上一篇:國外羽絨服品牌 誰有