我被要求寫下這段代碼的作用:
int main()
{
int var1,var2, *ptr;
ptr=&var1;
var2=12;
*ptr=var2;
var1=var1/ *ptr;
printf("%d %d", var1,var2);
}
現在我的問題是這意味著什么。起初 ptr 存盤 var1 的地址。然后 var2 被定義為 12。下一步 idk 是什么意思,最后一步也是如此。我終于列印了 1 和 12。不知道為什么。
我的理解是 12 也存盤在 ptr 中。因此,由于 ptr 具有 var1 地址,因此 var1 的值也為 12。所以最后一步是 var1=12/12。這就是為什么我在 printf 中得到 1 和 12。這正是我所理解的,但我并沒有真正理解它,我不確定它是否正確。順便說一句,這是不理解的。
uj5u.com熱心網友回復:
ptr=&var1;
&var1是物件的地址var1。ptr = &var1將地址存盤在物件中ptr。
var2 = 12;
這將 12 存盤在物件中var2。
*ptr = var2;
這會將 的值存盤var2在物件中*ptr。由于 12 存盤在 中var2,因此它將 12 存盤在物件 中*ptr。因為 的值ptr是 的地址var1,*ptr所以是var1。所以*ptr = var2在物件中存盤 12 var1。
var1 = var1 / *ptr;
*ptr是ptr指向的物件,即var1。所以var1 / *ptr用分子的值 , 除以分母var1的值 ,*ptr也是var1. 分子和分母的值都是12,所以var1 / *ptr是1。然后var1 = var1 / *ptr將1存盤在物件中var1。
printf("%d %d", var1,var2);
這將列印 和 的值,var1并將var2其轉換為十進制。根據以上內容,var1包含 1 并var2包含 12,因此列印“1 12”。
uj5u.com熱心網友回復:
指標ptr由變數的地址初始化var1。
ptr=&var1;
所以使用運算式與使用運算式*ptr是一樣的,var1因為取消參考指標你得到了變數var1。
因此這些運算式陳述句
*ptr=var2;
var1=var1/ *ptr;
可以等效地重寫為
var1 = var2;
var1 = var1 / var1;
var2最初被分配了整數常量12
var2=12;
并且變數的結果值var1將等于1獨立于它在分配運算式結果之前具有的值var1 / var1(當然前提是。var1不等于 0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/537840.html
標籤:C指针变量打印函数
上一篇:我正在使用的這個簡單代碼出現錯誤。我敢打賭解決方案非常簡單,但我似乎無法在網上找到答案。先感謝您
下一篇:指標初始化/取消參考
