1樓:匿名使用者
雖然b是正確答案,但是對cd的理解不對。
a,*p是對地址為p的記憶體賦值,因為p還未賦值,這種行為是危險的b,陣列的首址可理解為一個常量指標(即指向的地址不能改變的針),雖然指標不能被修改,但是其指向的地址的內容是可以改的。
c。a是常量,其地址不能被修改
d。錯誤在於對引用a的初始化,應該使用相同型別(int &a = b)
其實指標完整可以理解為一個整數(對常見的就是一個32位無符號整數),不過它的值有明確意義(代表一個記憶體空間),所以它的值不能是任意的(受可訪問地址範圍限制),從這個角度很容易理解為什麼指標相加是無意義的(會超出訪問範圍),而相差是有意義(兩個指標之間間隔了多少記憶體空間,不過要注意大地址減小地址才是有意義的)
2樓:匿名使用者
選 ba: 指標沒有初始化,即p所指地址不合法,此時呼叫 *p ,引起非法訪問。
cd 錯誤原因相同;
&a=&b; &a 取a的地址,返回一個臨時變數由編譯器生成,該變數的值是不可更改的!
指標變數賦值方式
3樓:娛樂k代表
指標變數賦值有三種方式:int i1、i2以及i3。
1、nt *p1=&i1,*p2=i2; 用整形變數的地址給基型別為整形的指標變數賦值。
2、p1=&i3; 給指標變數賦予變數的地址。
3、p1=p2; 通過指標變數給指標變數賦值。
存放地址的變數稱為指標變數。指標變數是一種特殊的變數,它不同於一般的變數,一般變數存放的是資料本身,而指標變數存放的是資料的地址。
擴充套件資料:
指標變數賦值三種方式例項:
1、方式一:int i1
i=3;
*i_pointer=3;
2、方式二:int i2
int i,j;
int *pointer_1,*pointer_2;
pointer_1 = &i;
pointer_2 = &j;
3、方式三:int i3
#include
void main()
{ char *string = 「i love china!」;
printf(「%s\n」,string);
4樓:手機使用者
int i1,i2,i3;
(1)int *p1=&i1,*p2=i2; 用整形變數的地址給基型別為整形的指標變數賦值
(2)p1=&i3; 給指標變數賦予變數的地址;
(3) p1=p2; 通過指標變數給指標變數賦值;
5樓:匿名使用者
int *p,a=3,*q;
*q=3;
*p=a;
p=&a;
p=q;
指標變數指向的變數的值變了,指標變數會不會變
a還是指向p1,b還是指向p2啊 只不過p1和p2的值互轉了 你說的情況可以這樣寫 int t a a b b t 這樣的話a指向p2,b指向p1,但是p1和p2的值還是原先的值不過不建議這樣寫 a和 b的值互換,也就是p1和p2的值互換,注意是 值 的互換,不是變數名 不會變指標變數中存的是地址,...
c語言指標變數問題
金色潛鳥 c 語言中,形式邏輯不成立,指標書寫的外形,在宣告中和在語句中,外貌相同,意思不同!int ptr 這是宣告,宣告 ptr 是指標,用於指向 int 型變數。語句中 ptr 表示 指標指向的數值,ptr 表示 指標指向的地址。有 的是值,沒星號的是地址。ptr int malloc num...
指標和變數
寫在函式定義裡的引數叫形參。寫在函式呼叫裡的引數叫實參。實參能把實參當時的數值傳到函式計算定義塊裡。但不一定能把函式塊裡的資料加工結果帶回來。函式運算結果要帶 用函式的地方,有幾種辦法 1 全域性量。2 函式返回值。3 通過實參帶回。想用實參帶回,c語言規定,凡要通過實參帶回的量,它對應的形參必須宣...