C語言如果我定義了指標int p和變數int p,他倆之間有什麼關係嗎

2021-04-22 00:32:50 字數 2512 閱讀 8927

1樓:匿名使用者

int *p;

int a=1;

p=&a;

p定義成了bai乙個整du型指zhi針,而a定義成了乙個初始值為1的整型變數。

dao指標是用來儲存內對應容型別的變數的位址的,所以p=&a;的意思是用指標p來儲存變數a的位址。

而如果同時定義int *p;int p;會發生編譯時錯誤,因為p重複定義了。

2樓:匿名使用者

同乙個作用域

內(比如同乙個**塊),不能重複定義變數,所以int *p;

int p;這樣的**是不能通過版編譯的

如果是不同的權作用域,那麼它倆並沒有什麼關係若是類似下面的定義:

int a;

int *p = &a;

表示p儲存了a的位址,或者說p指向a。

c語言中 int*p[4] 和 int(*p)[4]的區別是什麼?

3樓:匿名使用者

int*p[4]是指標的陣列

,也就是說它

是乙個陣列,陣列裡存的是乙個個的指標

int(*p)[4]是陣列的指標,也就是說它是乙個指標,指向的是乙個陣列。指標指向的型別會影響到指標加減運算時位址的位移。比如說有乙個陣列 int a[4],加上取址運算子 &a,這個表示式的型別就是指向陣列的指標,可以這樣賦值 p = &a;。

一般用於向函式傳遞二維陣列的時候使用這種型別,這時還有一種更直觀的寫法

void matrix_sum(int matrix_a[4], int matrix_b[4])

這種寫法和

void matrix_sum(int (*matrix_a)[4], int (*matrix_b)[4])

是等價的。

4樓:望闌珊將盡

結合性不一樣:前者是指標陣列,為4個int指標的陣列,有4個元素;後者是陣列指標,為乙個指標,型別為指向包含4個int型別元素的一維陣列的指標。

c語言中,定義int型變數a指標*p,那麼,*p=&a和p=&a是什麼區別?

5樓:匿名使用者

只能int *p=&a或者int *p;p=&a;

6樓:匿名使用者

定義int型別變數a和指標*p,則指標p存的是乙個int型變數的位址,即可以表達為:p = &a;

*p存的是int型變數的指,即p指標指向位址的內容,所以可*p = a; 當你用*p = &a時,編譯器會認為指標的值表示了位址,編譯報錯。如果你真想這樣表示,也可以,只需要將位址強轉為int型,即

*p = (int)&a;

7樓:天河宙

你要先int *p然後才能p=&a

8樓:匿名使用者

p是位址 &a是位址,*p是p位址對應的值

9樓:白花戀歌

去看 c和指標 這本書,有非常詳細的關於指標的幾乎所有的問題,&a表示取變數a的位址,根據宣告,*p表示訪問指標所得到的整形變數,一般情況下位址不能賦值給整形變數,如果非要這麼做,只能使用強制型別轉換

10樓:匿名使用者

*p 是錯的。。。。

若有定義:int **p;則p是乙個什麼變數

11樓:

p是指標變數.

int *******p;

不管你寫多少個 * 號 p 都是指標變數

這個變數儲存的資料是 乙個記憶體的位址

12樓:匿名使用者

對於int **p來說,p所指的物件是指標,那麼++p就是讓p的值增乙個指標的大小,雖然指標所指對像可大可小,但是指標自己的大小卻是一定的,目前的系統上一般是4位元組(64位系統我沒用過,可能是8位元組)。也就是說,對char *p和long *q來說,p和q本身佔記憶體容量是一樣大的(雖然char和long佔記憶體不一樣大)。

很多人以為「指向陣列的指標」就是「指向指標的指標」,於是有人寫這樣的**:

int a[2][3];

int **p = a;//錯誤

這個**的錯誤之處在於a是乙個陣列,它的成員也是陣列,所以a叫做「陣列的陣列」——c++中嚴格說來沒有二維陣列。那麼,你要用乙個指標來記錄a,就要用乙個能表示「陣列的陣列」的指標,以下**是正確的:

int (*p)[3] = a;//正確

只有這樣才能保證++p使p指向a的下一對像(該對像是乙個陣列)。

順便提一句:不要寫成「int *p[3];」

13樓:羽龍飛

**p是指向指標變數的指標。、

舉個例子就很明白了

int a=10;

int *pia;

pia=&a;

int **p;

p=&pia;

則*p就等於pia;

**p就等於*pia,而*pia等於a,即**p等於a=10;

c語言結構體定義了,C語言結構體 定義了typedef struct int key element 能否在main函式裡定義element x

bai。太強大了。翻譯過du來是這樣zhi的。定義 型別dao 型別名。簡單說。int是整型內。容那element 就相當於int a中的a,struct相當於int。理解麼?不理解。換個,陣列名。就是element,陣列就是 struct key就是陣列裡面的 i。這樣該懂了吧。沒有名稱的結構體就...

C語言中定義函式,變數是指向指標的變數,呼叫時要怎麼呼叫

首先fact函式返回的是double型別,第乙個引數是double型的二維指標.所以是 c i fact c,y,z 因為double c 3 是二維double指標,c i 是乙個double一維指標,c i 就是double型資料。c是二維指標,可以傳過去 c i fact c,y,z c i ...

C語言如果用指標去使用變數,和直接使用變數有什麼不同

指標是c語言中的乙個重要概念,也是c語言的乙個重要特色。正確而靈活的運用它,可以有效地表示複雜的資料結構 能動態分配記憶體 方便地使用字串 有效而方便地使用陣列 在呼叫函式時能獲得乙個以上的結果 能直接處理記憶體單元位址等 c程式設計 第三版 你在舉例的時候說的直接引用資料的時候是幾乎沒有區別的,陣...