程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c語言指針左值右值-c語言指針變量賦值左值右值得問題

c語言指針左值右值-c語言指針變量賦值左值右值得問題

編輯:編程解疑
c語言指針變量賦值左值右值得問題

c和指針一書提到了 左值與右值 , 左值是地址 右值是變量內容,如下的代碼 第三行與第四行
中, 第三行 *cp 左值代表的是指針cp 指向的地址 ,賦值ch變量對應的地址,但是第四行同樣是*cp作為左值
,但是 為什麼這裡如果賦值&ch2就會編譯錯誤呢,為什麼*cp 同樣作為左值,賦值給字符的地址,第三行通過,第四行 就會報錯呢?
再加一句啊,*cp是指針指向的內容那個,所以需要用變量的內容來賦值,這個我也是一直這麼來理解的,沒問題,我更想知道的是書中所說的左右值問題,左值都是代表地址,
右值代表的是變量的值,而且c和指針一書說到*cp時也是說 作為左值時代表的是指向內容的地址,而作為右值時,代表的是指向的內容,是否可以理解為這句話只是在聲明指針變量時有效? 如果在後面使用的時候 無論*cp 作為左值還是右值代表的都是指向的內容?
char ch='a';

char ch2='b';
char *cp=&ch;
*cp=ch2;

最佳回答:


我覺得應該是這個意思, cp作為左值得時候代表的就是指向內容的地址, 第三行初始化時,由於*cp值為空,所以需要一個初始化值,自然賦值是地址,
但是在接下來的對cp進行地址訪問內容
的操作時,*cp作為左值其實還是代表的是cp指向內容的地址,只不過當賦值20的時候,編譯時會自動分析,哦你給了我一個需要修改內容的地址,那我就把20這個值,賦值給你這個地址所指向的內容吧, 只要是左值,代表的都是地址,只不過在賦值過程中,*操作的過程是去那個地址去修改,書中說的*cp作為左值時代表的是指向內容的地址,沒錯,因為左值就是要指定需要修改的位置

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