C語言入門篇--變量的左值和右值
在看此塊內(nèi)容前可以先看看內(nèi)存及地址相關(guān)內(nèi)容,更容易理解。
1.普通變量
一個(gè)變量是有三個(gè)屬性:
1.變量的空間。
2.變量的內(nèi)容。
3.變量的地址。
空間即若干字節(jié),內(nèi)容即空間里放了什么,地址即變量對(duì)應(yīng)的空間地址。
#include <stdio.h> int main() { int a = 10;//定義變量a,開辟4個(gè)字節(jié)的空間。 a = 20;//見下述文字解釋 int b = a;//見下述文字解釋 return 0; }
一般對(duì)于一個(gè)變量而言在表達(dá)式中的位置就決定了 使用的是變量的空間還是內(nèi)容:
a = 20;//a為左值,用的是a的空間,把20放到a的空間里。
int b = a;//a為右值,用的是a的內(nèi)容,把a(bǔ)的內(nèi)容放到b里。
2.指針變量
看之前可以先看看指針變量有關(guān)內(nèi)容。
2.1初步理解
#include <stdio.h> int main() { int a = 10; int *p = &a;//p指向a,見下述文字解釋 *p=20;//見下述文字解釋 int b = *p;//見下述文字解釋 return 0; }
int *p = &a;
//初次定義指針變量p
p為左值,用的是p的空間,此處把a(bǔ)的地址寫入p的空間里,此時(shí)p指向a
如下圖
p指向a后,*p=20;和int b = *p; 兩處的*p代表的是a的空間或內(nèi)容,
即對(duì)指針進(jìn)行解引用(*p)代表指針?biāo)赶虻淖兞浚?/p>
此時(shí)*p就是a,但具體用的是變量a的空間還是內(nèi)容取決于它是左值還是右值。
*p=20;//*p為左值,即a為左值,所以用的是a的空間,此處把20放入a的空間。
int b = *p//*p為右值,即a為右值,所以用的是a的內(nèi)容,此處把a(bǔ)的內(nèi)容放入b的空間。
#include <stdio.h> int main() { int a = 10; int *p = &a;//p指向a printf("a的地址=%p,\n", &a); printf("a的內(nèi)容=%d,\n", a); printf("p的內(nèi)容=%p,\n", p); printf("p指向的內(nèi)容=%d,\n", *p);//此時(shí)*p為右值,即用a的內(nèi)容 printf("\n"); *p = 20; printf("a的內(nèi)容=%d,\n", a); printf("\n"); int b = *p; printf("a的內(nèi)容=%d,\n", a); printf("b的內(nèi)容=%d,\n", b); return 0; }
2.2深入理解
當(dāng)p指向a后,*p就相當(dāng)于a,但指針變量p還是p,有其自己的空間和內(nèi)容。
#include <stdio.h> int main() { int a = 10; int b = 20; int *p = &a;//p指向a p = &b;//見下述文字解釋 int *q= p;//見下述文字解釋 system("pause"); return 0; }
p = &b;//p為左值,用p的內(nèi)容,此處把b的地址寫入p的空間,p指向了b,不指向a了。
int *q= p;//初次定義指針變量q,q為左值,用的是q的空間;
p為右值,用的是p內(nèi)容(p經(jīng)過p = &b;語句后,p中的內(nèi)容為b的地址)
此時(shí)指針變量p和q中的內(nèi)容為b的地址,即指針變量p和q均指向b。
#include <stdio.h> int main() { int a = 10; int b = 20; int *p = &a; p = &b; int *q= p; printf("b的內(nèi)容=%d\n", b); printf("p指向的內(nèi)容=%d\n", *p); printf("q指向的內(nèi)容=%d\n", *q); return 0; }
以上就是C語言入門篇--變量的左值和右值的詳細(xì)內(nèi)容,更多關(guān)于C語言變量的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Qt實(shí)現(xiàn)簡單動(dòng)態(tài)時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)簡單動(dòng)態(tài)時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07C語言壓縮文件和用MD5算法校驗(yàn)文件完整性的實(shí)例教程
這篇文章主要介紹了C語言壓縮文件和用MD5算法校驗(yàn)文件完整性的實(shí)例教程,這里演示了Windows下將文件壓縮為7z格式以及MD5檢驗(yàn)文件和密碼的方法,需要的朋友可以參考下2016-04-04