當我使用此代碼時,輸??出不正確。
#include <stdio.h>
int main() {
int a, *ptr;
a=10;
*ptr=&a;
printf("%d",*ptr);
return 0;
}
輸出是:634927948
但是當我使用這段代碼時,它給出了正確的輸出。
#include <stdio.h>
int main() {
int a=10;
int *ptr=&a;
printf("%d",*ptr);
return 0;
}
輸出是:10
uj5u.com熱心網友回復:
*ptr=&a;意思是“將地址寫入a記憶體ptr指向”。請注意,int *ptr;它未初始化,因此您正在寫入隨機記憶體位置。- 因此,
*ptr是 : 的地址a嗎(size_t)&a == 634927948?
- 因此,
int *ptr=&a;表示“ptr是指向所在記憶體的指標a”。- 因此,
*ptr是 的地址處a的值,它a == 10本身就是
- 因此,
uj5u.com熱心網友回復:
以下行是在分配之前取消參考指標。的記憶體位置的ptr值分配給 的記憶體地址a。
*ptr = &a;
相反,該行應該是:
ptr = &a;
ptr將指向的記憶體位置a。
如果您使用:
*ptr = a;
指標指向(已經)的記憶體位置將被賦值為a.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/483987.html
上一篇:程式的指標訪問表示
下一篇:將int串列轉換為字串-C
