程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言-求解C程序裡第二個printf的結果為何是3,7,7呢?

c語言-求解C程序裡第二個printf的結果為何是3,7,7呢?

編輯:編程綜合問答
求解C程序裡第二個printf的結果為何是3,7,7呢?

int k=7;
void f(int **s)
{
int t=&k;
*s=t;
_printf("%d,%d,%d,",k,*t,
*s);_
}
main()
{
int i=3,*p=&i,**r=&p;
f(r);
printf("%d,%d,%d\n",i,*p,**r);
}
/*
VC++程序運行結果為:
7,7,7,3,7,7
*/
求解C程序裡第二個printf的結果為何是3,7,7呢?如果f(r)把r的地址改變了,p的地址也跟著變嗎?那i的地址不是也跟著p也改變了嗎?結果應該是7,7,7啊?求大俠幫忙解答

最佳回答:


這個問題和你提的另一個問題,突破點都一樣,我已經回答了。把 “變量”“ 指針” “指針的指針”這三個概念理解透了,這類問題你就不會再困擾了。
他們最終牽涉到兩個概念“地址” “值”
比如一條無限長的走廊上有無限多個房間,我們每個房間給一個唯一門牌號 1、 2 、3、 5 ……
這個編號就是每一個房間的“地址”,房間裡面放的物品就是它的“值”
變量:就相當於一個房間, 它有一個編號,而且裡面放物品。
指針:相當於兩個房間,一個房間裡面存放的是另一個房間門牌號,我們需要通過房間裡面的門牌號才能找到存放物品的房間取得物品。
指針的指針:相當於3個房間,第一個房間裡放著第二個房間的門牌號,第二個房間裡放著第三個房間的門牌號,第三個房間裡存放的才是物品,
我們必須通過前面兩個房間才能找到存放物品的那個房間取得物品。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved