C語言指標急急急

時間 2022-03-08 14:35:03

1樓:匿名使用者

無論是函式還是變數,編譯器都要求先宣告、定義,後使用,宣告和定義可以同時實現。

指標也是變數,同樣適合這個原則。

比如int a,*p; // 宣告一個整形變數a,和一個整形指標p

a = 3; // 對變數a進行初始化

p = &a; // 對指標p進行初始化,編譯器已經知道p是指標,這裡將變數a的存放地址賦給指標變數p,p前不需要加星號(*)。

以上操作遵循先宣告,後定義,再使用的原則。下面則是宣告、定義、使用同時進行nt num = 6;

int num = 6;

int *pnum = # // pnum前面有星號,這個星號告訴編譯器,pnum是指標,如此而已。

2樓:

「「被賦值的指標變數前不能再加「*」說明符」——胡言一派!請看:

void main(void)

"那麼int *p=&a這樣的在初始化中是不是可以的"?——這當然可以,這裡的「*」不是p的而是int的,叫作"宣告p是int *型指標並初始化為a的地址"。

記住了,宣告指標時*只是個記號,是與前面的型別配合的,不是變數的一部分,告訴編譯器緊跟在後面的一個變數是指標!而操作指標時*是「取值」操作符,自然也不是指標變數的!

3樓:匿名使用者

你要理解,指標的用法和意義

他就是一個地址,可以通過這個地址找到你

指標變數有兩個地址,這個你要明白

首先它是一個變數,那麼儲存他的記憶體地址是一個地址

另外,他是指標,所以他要指向一個地址,那麼就是申請它的記憶體地址中儲存一個資料,這個資料就是一個地址,

也就是說這個變數申請了一個記憶體地址,而這個記憶體地址中儲存的資料還是一個記憶體地址

*p=&a 這個語法上沒錯,可以這麼寫,但是你要理解,也就是這樣相當於兩層指標,p指向的記憶體地址儲存了一個a的地址

而int *p=&a這個,前面有int,那麼就是為了申請一個變數*p,如果不加*,那麼p就是一個一般變數,不是指標

接著賦值,當然是給一個地址了,就是a變數的地址

4樓:匿名使用者

int *p=&a;

相當於兩個語句的結合,變數定義語句和賦值語句。

應該像這樣拆開理解:

int* p;

p=&a;

那個星號放到前邊,就不容易誤會了。

5樓:種燒餅的怪叔叔

兩個*的表達意思是不一樣的,首先你要有一個概念:在c語言或者c++裡一個符號可以表達多個意思,這叫做符號的過載。

1)對於初始化中的*其實是這個意思(括號是我為了你看的方便加的):(int*) p=&a,這個意思是,p的型別是int*(比如char p,那麼意思就是p的型別是char),並且在初始化的時候要求電腦為他配置int*型別大小的空間

2)使用時的(*p)=&a,這時候的*p意思是讀取p中的儲存地址的空間。而&a意思是生成空間a的地址(有點拗口,不理解可以無視他),把一個地址交給一個儲存int型別的空間是非法的。你明白這兩個符號的意思是不同的就足夠了。

6樓:

可以的,int *p=&a;就相當於int *p;//表示定義一個指向整型的指標

p=&a;//表示把變數a的地址賦值給p,因為指標本身也是一個變數,只不過內部儲存的是地址而已

7樓:qq過河的毛毛蟲

p代表儲存空間,* 是求地址運算子。你在看*p=&a就容易理解了。

8樓:泡望笑

其實你的理解是對的。

c語言問題急急急,C語言問題,急急急

x 1進入外switch且執行case 1,y 0進入內switch且執行case 0,輸出first 遇到break,內switch終止,case 1執行完畢 case 1後面沒有break,所以外switch不終止,繼續向下執行case 2,輸出third 所以程式執行結果為 共輸出兩行內容,第...

c語言高手幫忙修改!!急急急急急(50分)

tmpbuff 4 不在陣列tmpbuff中,所以它的值是未知的。tmpbuff只有tmpbuff 0 tmpbuff 3 這四個元素。在while 迴圈後面再加一個if判斷就可以了!要限制tmpbuff 0 不能等於0,只需要修改原程式中的if語句,修改後的程式如下 像這樣 include inc...

c語言中e表示什麼急急急,c語言中 E表示什麼 急急急!!!!

幹嗎尋找周杰倫 樓上是自動答題機回答的,不要理他。我來說一下吧,c語言中對於整數到布林型別的處理是0為假,非0為真。當變數e 0時候,此時把e當作表示式來看,表示式e的值為假,形如if e 這樣的語句不被執行。當變數e 0時候,此時把e當作表示式來看,表示式e的值為真,形如if e 這樣的語句被執行...