我是靠谱客的博主 粗心帆布鞋,最近开发中收集的这篇文章主要介绍C语言入门篇--变量的左值和右值,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在看此块内容前可以先看看内存及地址相关内容,更容易理解。

1.普通变量

一个变量是有三个属性:

1.变量的空间。

2.变量的内容。

3.变量的地址。

空间即若干字节,内容即空间里放了什么,地址即变量对应的空间地址。

#include <stdio.h>
int main()
{
	int a = 10;//定义变量a,开辟4个字节的空间。
	a = 20;//见下述文字解释
	int b = a;//见下述文字解释	
	return 0;
}

一般对于一个变量而言在表达式中的位置就决定了 使用的是变量的空间还是内容:

a = 20;//a为左值,用的是a的空间,把20放到a的空间里。
int b = a;//a为右值,用的是a的内容,把a的内容放到b里。

2.指针变量

看之前可以先看看指针变量有关内容。

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的地址写入p的空间里,此时p指向a

如下图

p指向a后,*p=20;和int b = *p; 两处的*p代表的是a的空间或内容,

即对指针进行解引用(*p)代表指针所指向的变量,

此时*p就是a,但具体用的是变量a的空间还是内容取决于它是左值还是右值。

*p=20;//*p为左值,即a为左值,所以用的是a的空间,此处把20放入a的空间。

int b = *p//*p为右值,即a为右值,所以用的是a的内容,此处把a的内容放入b的空间。

#include <stdio.h>
int main()
{
	int a = 10;
	int *p = &a;//p指向a
	printf("a的地址=%p,n", &a);
	printf("a的内容=%d,n", a);
	printf("p的内容=%p,n", p);
	printf("p指向的内容=%d,n", *p);//此时*p为右值,即用a的内容
	printf("n");
	*p = 20;
	printf("a的内容=%d,n", a);
	printf("n");
	int b = *p;
	printf("a的内容=%d,n", a);
	printf("b的内容=%d,n", b);	
	return 0;
}

2.2深入理解

当p指向a后,*p就相当于a,但指针变量p还是p,有其自己的空间和内容。

#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的内容,此处把b的地址写入p的空间,p指向了b,不指向a了。

int *q= p;//初次定义指针变量q,q为左值,用的是q的空间;

p为右值,用的是p内容(p经过p = &b;语句后,p中的内容为b的地址)

此时指针变量p和q中的内容为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的内容=%dn", b);
	printf("p指向的内容=%dn", *p);
	printf("q指向的内容=%dn", *q);
	return 0;
}

以上就是C语言入门篇--变量的左值和右值的详细内容,更多关于C语言变量的资料请关注靠谱客其它相关文章!

最后

以上就是粗心帆布鞋为你收集整理的C语言入门篇--变量的左值和右值的全部内容,希望文章能够帮你解决C语言入门篇--变量的左值和右值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(105)

评论列表共有 0 条评论

立即
投稿
返回
顶部