c語言指標變數問題

時間 2021-08-31 06:06:47

1樓:金色潛鳥

c 語言中,形式邏輯不成立,指標書寫的外形,在宣告中和在語句中,外貌相同,意思不同!

int *ptr; 這是宣告,宣告 ptr 是指標,用於指向 int 型變數。

語句中 *ptr 表示 指標指向的數值, ptr 表示 指標指向的地址。有*的是值,沒星號的是地址。

ptr=(int *)malloc(num * sizeof(int)); 這是動態分配,分配了num個int型數值的存放空間,ptr 表示 指標指向的地址(分配了的空間的“始地址”)

你也可以理解成,定態宣告瞭陣列: int ptr[num]; 陣列名ptr, 有 num個元素。

scanf("%d",&ptr[i]); ptr[i] 是陣列第i號元素的值。&ptr[i] 是陣列第i號元素的地址。

printf("%d",ptr[i]); 輸出 ptr陣列第i號元素的值.

---深入理解:

語句裡,ptr[i] 裡的 實質上是運算子,ptr[i] 等價於 *(ptr+i)。是值。

語句裡,&ptr[i] 等價於 (ptr+i) ,是地址。等於: ptr的地址+i * sizeof(int)。

2樓:昝成秋梵

ptr申請了num個int型記憶體區域後,int *ptr就等價於int ptr[num]。

scanf("%d",&ptr[i])的意思是獲取你輸入的整數,賦值給ptr[i]。

printf("%d",ptr[i])輸出的並不是ptr指標,而是ptr[i]的值,因為陣列可以用下標取值。

ptr是指標變數,但是ptr[i]不是指標變數,ptr[i]可以理解為一個int型變數。

使用scanf存入時,&並不是加在ptr上,而是加在ptr[i]上,取的是ptr[i]的地址。[ ]的運算優先順序高於取地址符&。

3樓:匿名使用者

1、給指標變數賦初值在語法上是沒有錯誤的,編譯執行也可以通過,但是一旦**量增多後,很容易造成指標的錯用,為了防止這一問題最好將指標變數定義的時候就置成null,這樣做是為了**安全著想。 2、指標定義後就會隨機指向一個位置的,編譯的時候也不會提示錯誤,程式短很容易找出來,長了多了就難找了,所以這是一個好習慣吧。

4樓:聽不清啊

scanf("%d",&ptr[i])是從鍵盤讀入一個十進位制整數,並存入到陣列元素ptr[i]中。

int *ptr=null;

ptr=(int *)malloc(num * sizeof(int));

是根據輸入的num的大小動態申請陣列的方法。ptr是一個指標(同時也是ptr陣列的陣列名)

相當於靜態申請陣列

int ptr[num];

的作用,只是這兩都分別從系統的位置不同區域申請記憶體(初學者可暫時忽略這一點,使用上是完全一樣的)。

ptr[i]就是這個陣列中的一個成員,加上取地址符&,就是告訴c系統,讀取到的資料要存放的位置,

scanf("%d",&ptr[i]);完全等同於scanf("%d",ptr+i);---------scanf函式的使用格式如此,必需要使用資料存放地址的。

5樓:匿名使用者

int *ptr是指標,malloc了num個int後,ptr指向這段連續的記憶體,ptr其實就是num個int的陣列的頭指標,也可以將ptr認為元素是int的陣列。符號你可以認為是取值操作,那麼ptr[0]或者*(ptr)就是第一個元素,ptr[1]或者*(ptr+1)就是第二個元素...

scanf("%d",&ptr[i])就是依次對這個陣列(連續的記憶體)賦值。

scanf的函式定義,這裡是個地址,也就是指標,&是取地址操作,也可以寫成scanf("%d", ptr+i);

printf("%d",ptr[i])是輸出第i個元素(連續記憶體的第i個值)

6樓:匿名使用者

ptr是指標,但輸出的是ptr[i],指標名+下標可以相當於陣列名+下標,ptr[i]相當於*(ptr+i),指標解引用了,所以輸出的指標移動i位所指的值。scanf引數是變數的地址,ptr[i]的地址就是&ptr[i]。總之一句話scanf傳變數地址,printf傳變數值。

7樓:匿名使用者

scanf需要一個地址引數,表示往指定地址輸入,所以在陣列元素前加取地址運算子。

指標變數儲存了指向變數的地址,所以可以按整型元素輸出地址值。

8樓:童之新

這是指標與陣列可以互換的關係了,比如int buf[10]; int *ptr = buf; 所以*ptr = buf[0]; *(ptr+1) = buf[1];也可以表示ptr[0] = buf[0]; ptr[1] = buf[1];所以說在scanf函式裡,傳入的是一個地址,而ptr[i]明顯是這個地址的值,所以要加個取地址符&。

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

指標的概念 指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別,指標所指向的 型別,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。讓我們分別說明。先宣告幾個指標放著做例子 例一 1 int ptr 2 char...

C語言指標問題

樓主,形參是不能改變實參的值的,如果你想得到你的效果,只能把printf 放入函式裡面才能使你的數字順序改變 抱歉!不是很明白lz問啥 這程式是把陣列a的 n1,n2 的元素順序對調啊,不覺得有問題 還有,你說那 執行後內容沒有變 是不是你看錯了?肯定變的,如第一遍後a 0 4吧。抱歉,只能這樣了,...

c語言指標問題

p c 表示的是變數c的位址指向p,既是指標變數p裡面存的就是c的位址,通過p能找到c,此時 p c.例如c的位址是1000h,c 3.則p 1000h,p 3.p c 表示c的位址存到p指向的變數 p為指標變數,已經指向乙個變數 此時例如p指向的變數b p b p c執行後 c的位址是1000h ...