c語言 選擇 求教 關於指標,C語言 選擇 求教 關於指標

2022-03-03 02:51:59 字數 1287 閱讀 1830

1樓:匿名使用者

樓上說的不對,變數宣告了當然是可以取位址的,是可以用&的,(1)是錯的是因為int a,*p,*q,p=q=&a;

p=q=&a前面是個逗號,也就是說,先宣告int *p, 後面又宣告 int p, 也就是將變數p宣告了兩次不同型別,所以是不對的,

(4)是對的,所以選d

好吧,我說的樓上樓上。。。。

2樓:匿名使用者

全部都是錯的,這一點是完全可以肯定的。

對於(1)我們首先要了解,指標變數在被賦予乙個確定的位址時,是乙個不確定的值,也就是說它可以指向任意的位置。那麼int *p, *q; q = p;就是錯誤的,因為p, q都沒有確定的位址值。int a, *p, *q, p = q = &a;是也是錯誤的,因為int a, *p, *q是宣告語句,而p = q = &a是賦值語句,它們是不能在同一條語句中的。

對於(2)我們需要知道非位址值是不能賦值給乙個指標變數的,其實也就是不同型別的變數不相容而已,因為c語言是強制型別語言。那麼就是錯誤的,因為p是指標型別變數,而*q是int型別值。int a = 20, *p; *p = a; 是正確的。

對於(3)我們需要知道指標變數在賦予乙個確定的位址時,是不確定它指向的位址的,也就是說我們無法定位這個變數,也就使用這個變數,和(1)類似的問題。那麼就是錯誤的,因為在 *p = *q;中p沒有被賦予乙個確定值,那麼q就沒有確定的指向,於是對q進行取值運算是乙個錯誤的表達是正確的,此時需假定q是乙個事先宣告且被賦予確定值的指標變數。

對於(4)我認為是正確的。首先中宣告了乙個int 型變數a和乙個指向int型變數的指標p,另乙個指向int型的變數q,並將a的位址賦給q。然後是一條賦值語句,將q所指向的變數的位址,也即a的位址賦值給p。

對於int p, *q; q = &p;首先宣告乙個int型變數,和乙個指向int型變數的指標,然後是乙個宣告語句將p的位址賦給指標q。所以我認為答案是錯誤的。

如果我的解答有任何漏洞,還望多多指教!

3樓:豚胖

選項(1)中"int a,*p,*q,p=q=&a;"中的"int a,*p,*q"和"p=q=&a;"之間是逗號,而不是分號,所以是錯的

4樓:百小度

(1)裡的a,只是乙個變數,是沒有位址的,因而不能使用&。(4)那兒同理。

C語言選擇題,求詳解,C語言選擇題乙個,求詳解

答案 a.123 詳解抄 首先題目定義了 乙個bai字元陣列s,其中存du放了字串 123 隨後定義了字元型指zhi針p,並且dao使p指向字串s.之後,題目開始輸出結果,注意輸出方式 p 這是本題關鍵所在,根據運算子結合順序,先輸出 p,也就是字串第乙個字元 1 之後執行p 指標後移指向字元 2 ...

關於c語言中的指標問題,關於c語言中的指標問題。

char p heir 這句話包含了2層意思,一是定義乙個指標變數p,即 char p 二是為指標變數p賦初值,即 p heir 實際是將存放字串 heir 的記憶體位址賦給p 因此這句話實際上等價於 char p p heir char p heir 這個表示定義字元指標變數p,並將存放字串 he...

C語言指標問題,C語言指標問題

這個演算法最後的時候 p和q都是指向a的,在最後這個時候a的結構是,q之前的是所有的除了版 之外權 的字元。q之後的都是原來a裡面的資料,對於這個時刻是髒資料。最後把q指向的那個位置賦值為 0可以在遍歷a的時候,不遍歷到髒資料,而這個時候p正好指向的就是 0,所以 q p 迴圈結束條件是 p 0,因...