1樓:手機使用者
)[4]、**p的區別bai
(由於裡面du牽扯一些東西比較深,zhi我簡單的dao講講吧)
*p[4]是指標陣列內,容
他是陣列。陣列裡面放的是指標,簡單的說定義了4個指標,分別是*p[0] *p[1] *p[2] *p[3],相當於將這四個指標打包到這個陣列中
(*p)[4]是陣列指標,他是指標並且是一個指向二維陣列的指標。因為以行為單位,又稱行指標。
通俗點講,後面的[4]說明他的每行有4個元素,[0]代表第一列的下標,[1]代表第二列的下標,一次類推。(*p)的意思是指標p指向第一行,*(p+1)即指向第二行,同理一次類推。那麼*(p+2)[3]的意思即是指二維陣列第二行第四列的元素
**p是二級指標,即指向指標的指標,他也是一個指標,主要區別在於應用的範圍不同,行指標作用物件僅僅是二維陣列,二級指標的應用範圍就廣了,比較典型的就是他可以用指標引數傳遞記憶體,指標陣列和陣列指標可沒有這樣的用法。也可以用他動態申請記憶體,儲存二維陣列元素等等
樓主耐心學習吧,只要堅持下去,這些東西都會慢慢理解的
2樓:匿名使用者
有必要正本清源:
int *(p[4]) 就是陣列 加個()而已 等同於 int * p[4]
int(*p)[4] 就是指標
簡單明瞭
3樓:童川
int *(p[4])是指標陣列,陣列記憶體放的是四個指標
int (*p)[4]是陣列指標,陣列記憶體放的整形,而p指向該陣列。
4樓:匿名使用者
int *(p[4]) p[0-4]的值的類
抄型都是 int* 這個就是 int* a[4] 把int*當作型別來看
int(*p)[4] p用來指向a[n][4]的陣列 這樣賦值: p = a 或者p= &a[i]
const int *p和int * const p的區別
5樓:育知同創教育
const int *p和int * const p的區別如下:
const int *p表明指向的物件是const型,不可以修改,但是指標p的指向可以修改。
* const p表明指標變數p是const型,它的指向不可修改,但是指向的物件可以修改。
一般來說用*限定的是指標區域存放的內容,不用*的是記憶體地址。
6樓:刀無極啊
你可以看看這篇文章,講的很仔細
「int **p」和「int *p」有什麼區別?
7樓:怕不他啊不了
int *p表示的是一級指標,表示p所指向的地址裡面存放的是一個int型別的值。
int **p表示的是二級指標,表示p所指向的地址裡面存放的是一個指向int型別的指標。
一級指標存放變數的地址,指向的值是變數的內容。如int* p=, p=陣列的首地址,*p=陣列的第一個值;
二級指標存放一級指標的地址,指向一級指標。如int*p =, int**pp=&p,pp=指標p的首地址,*pp=陣列的首地址,**pp=陣列第一個值1。
指標陣列的陣列名傳遞引數對應為指標的指標即二級指標,二維陣列的陣列名傳遞引數對應為陣列指標即指向一維陣列的指標
一級指標通過形參,可以修改實參中指標所指向的地址中的值。修改不了實參中指標所指向的地址。需要藉助二級指標才可以。
8樓:尉詩桃牟畫
int*p
:一級指標,表示p所指向的地址裡面存放的是一個int型別的值int**p
:二級指標,表示p所指向的地址裡面存放的是一個指向int型別的指標(即p指向的地址裡面存放的是一個指向int的一級指標)
例如:int
i=10;
//定義了一個整型變數
int*p=&i;
//定義了一個指標指向這個變數
int**p1=&p;
//定義了一個二級指標指向p指標
那麼取出10的值方式為:
printf("i=[%d]\n",*p);
printf("i=[%d]\n",**p1);
int(*p)[4] int*p[4]
9樓:匿名使用者
樓主你好。首先學習指標是有好多概念容易混淆。下面我來幫你區別一下:
1、int(*p)[4];------ptr為指向含4個元素的一維整形陣列的指標變數(是指標)
2、int *p[4];-------定義指標陣列p,它由4個指向整型資料的指標元素組成(是陣列)
3、int(*)[4];--------實際上可以看作是一種資料型別。也就是第一個(int(*p)[4];)中定義的p的資料型別
其實你要看這種到底是什麼,就是要看他最先和誰結合。 比如1中p先與*結合,那就說明p本質是一個指標;而2中p先與後面的[4]結合,說明他本質是一個陣列。再慢慢理解。
希望能幫到你。如有疑問可以再問我。
10樓:竹竹風子
當然不是,int(*p)[4]表示p是一個指標變數,它指向包含4個整型元素的一維陣列
而int *p[4],由於方括號運算級別高,因此p先與[4]結合,此時p[4]定義成陣列形式,再與前面的 * 結合,這樣一來就是一個存放指標的陣列了。
11樓:冷漠鑑客
int(*p)[4] 是一個指向4個整形數陣列的指標
int*p[4]是一個有4個指標的陣列,該指標是一個指向一個整型數的。
這個在c語言裡是難點,初學時很容易混淆,不過你先找變數,然後先往右看,如果遇到圓括號(一般是圓括號,而且是右半邊,如果是左半邊就說明它是一個函式)就往左,比如第一個p先往右,然後遇到括號,所以往左看到*,證明他是一個指標,是一個指向整形數陣列的指標。第二個,p向右,是一個陣列,是一個有4個指標的陣列。
12樓:匿名使用者
int(*p)[4];------p為指標變數指向含4個元素的一維整形陣列(p是一個指標)
int *p[4];-------定義指標陣列p,該陣列中有4個整形指標變數,(p是指標陣列,其中有4個指標)
(*int)[4]和*int[4]的區別?
13樓:雙魚哎呀呀
int *p[4]; //定義一bai個指du針陣列
zhi,該陣列中每個元素是一個指標,每dao個指標指向**就內需要程式容中後續再定義了。
int (*p)[4]; //定義一個陣列指標,該指標指向含4個元素的一維陣列(陣列中每個元素是int型)。
區分int *p[n]; 和int (*p)[n]; 就要看運算子的優先順序了。
int *p[n]; 中,運算子[ ]優先順序高,先與p結合成為一個陣列,再由int*說明這是一個整型指標陣列。
int (*p)[n]; 中( )優先順序高,首先說明p是一個指標,指向一個整型的一維陣列。
14樓:匿名使用者
你說的是int (*p)[4] 和 int *p[4]吧
int (*p)[4] ; p是陣列指標 ,即p是指標變數,它的型別是版「四個int 型別」的資料,p++會使p向後移動權「四個int 型別」的空間。很少用的,一般只用在對二維陣列的遍歷時使用。慢慢對c熟悉了再去研究吧。
int a[5][4]; p=a;這樣p指向a【0】,p+1指向a【1】,.。。
int *p[4] ; p是指標陣列,即p是陣列名,它有四個元素,每個元素都是一個指向int 型別資料的指標
int(*p)[4] int*p[4]是一個意思嗎?
15樓:竹竹風子
當然不是,抄int(*p)[4]表示p是一個指標變數,它指向包含4個整型元素的一維陣列
而int *p[4],由於方括號運算級別高,因此p先與[4]結合,此時p[4]定義成陣列形式,再與前面的 * 結合,這樣一來就是一個存放指標的陣列了。
16樓:匿名使用者
int(*p)[4];------p為指標變來量指向含4個元素的源一維整形陣列
bai(p是一個du指標zhi)
int *p[4];-------定義指標陣列p,該陣列中有4個整dao形指標變數,(p是指標陣列,其中有4個指標)
17樓:夏水秋池
不一樣第一個是一個指向有4個int元素的指標,是一個指標
第二個是一個指標陣列,是一個陣列,裡面儲存有4個指標
18樓:無情★溫柔
不是,一個是陣列指標,一個是指標陣列
int (*p)[4]和int * p[4]到底是神馬意思啊
19樓:
int *p[4]中定義的p是有4整型指標的陣列
int(*q)[4] q是指向具有4個整型元素的陣列的指標!
用法int f[10];
int x[4],y[4],z[4],w[4];
int a,b,c,d;
int *p[4] =;
和int *p[4] =;
p[0]= x;p[1]=y;p[2]=z;p[3]=w;
//*(p[0]+1) == x[1]
p[0]+1 == x+1;
都是可以的;
初始化:
int(*q)[4] =;//不可以int(*)[4]與int* [4]不相容;
int(*q)[4] =; ;//不可以int(*)[4]只是一個指標;
int(*q)[4] =x ; //不可以 q 是int(*)[4]; x是int* 不相容;
int(*q)[4] =&x ; //q,&x 都是 可以int(*)[4] ;
int(*q)[4] =&f ; // 不可以q 是 int(*)[4],&f是int(*)[10];不相容
賦值:q =x ; //q 不可以 q 是int(*)[4]; x是int* 不相容;
q =;//不可以int(*)[4]與int* [4]不相容,不可以這樣賦值;
q =; ;//不可以int(*)[4]只是一個指標,是個4個整型元素陣列的指標;
//{} 內是int *[4] 是個int *指標的陣列
q =&x ; //可以q,&x 都是 int(*)[4] ;
q =&f ; // 不可以q 是 int(*)[4],&f是int(*)[10];不相容
*q 是個四個元素的陣列
(*q)+1 陣列第一個元素的地址
(*q)[1] 陣列第一個元素
20樓:示申僉
int *p[4]定義一個指
針陣列,這個陣列的每個元素都一個指向int資料型別的指標。
比如:int a=1,b=2,c=3,d=4;
int *p[4]=;
int (*p)[4]定義一個指向一個一維陣列的指標,這個一維陣列資料型別是int,共有四個元素。
比如:int a[4]=;
int (*p)[4];
p=a;
與以下定義等價的是intp4為什麼說詳細點謝謝
int p 4 指標陣列,包含4個指向int變數的指標 int p 4 陣列 int p 指向int變數的指標 int p 4 與 int p 4 等價版int p 4 指向一維數 權組的指標 int p 4 是定義一個 複數制組 int p 是定義一個指向整型資料的一個變數int p 4 是定義一...
請問三星的i9000和i9023哪個好啊
現在9023降價了 2200 2300左右 非常值得購買但是不代表他比i9000好 i9000是sa螢幕 這一點 要比9023強很多 因為9023是9020的縮水版本 用的事slcd的螢幕 非常一般 9020才是真正的牛機 可惜沒有賣了 而且都3000 gpu9000也比9023好 9000可是三星...
請問怎麼弄能讓電腦上的ipv4協議裡的ip地址等資訊
最簡單的一個方法,第一是dhcp自動分配,第二是你在ipv4地址設定介面,右下角有高階選項,進去可以設定多個ip地址 筆記本怎麼會分配到兩個ipv4地址 很可能是在網絡卡bai的ip屬性中du 設定了高階zhi選項,這樣就可能出dao現兩個或多個ip地址回 在ip地址設定中選答擇靜態ip地址,在這裡...