vc 指標變數賦值問題,指標變數賦值方式

時間 2021-12-22 17:51:32

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語言規定,凡要通過實參帶回的量,它對應的形參必須宣...