c語言中 int *p[4]和int (*p)[4]在定義和使用方面有什麼區別? O(∩_∩)O謝謝

  • 作者:由 匿名使用者 發表于 動漫
  • 2022-06-18

c語言中 int *p[4]和int (*p)[4]在定義和使用方面有什麼區別? O(∩_∩)O謝謝轉角遇到愛~2022.02.04 回答

*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

c語言中 int *p[4]和int (*p)[4]在定義和使用方面有什麼區別? O(∩_∩)O謝謝じ半檸℅半桔2019.01.07 回答

//舉例說明:

int *p1[4];//定義指標陣列。這個陣列有四個元素,每個元素都是指向整形變數的指標。

c語言中 int *p[4]和int (*p)[4]在定義和使用方面有什麼區別? O(∩_∩)O謝謝匿名使用者2011.04.21 回答

//舉例說明:

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的第一行。

Top