指针中左值和右值的理解

指针这一块实在看不懂,我知道左值是出现在表达式左边的值,右值是出现在表达式右边的值。表格里的右值我能理解,左值完全不理解啊……

img

左值是可以放在等号左边的内容
右值是可以放在等号右边的内容

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7551949
  • 这篇博客你也可以参考下:华为在线笔试题 接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
  • 除此之外, 这篇博客: 【 英文单词排序 】 本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。中的 输出格式: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    输出为排序后的结果,每个单词后面都额外输出一个空格。
    输入样例:
    blue
    red
    yellow
    green
    purple
    #
    输出样例:
    red blue green yellow purple
    #include <stdio.h>
    #include <string.h>
    main()
    {
        char str[20][10],t[20],str1[10];
        int i,j,n=0;
        while(1)
    	{
        	scanf("%s",str1);
        	if(str1[0]=='#')
    	    {
        		break;
        	}
            else
    		{
            strcpy(str[n],str1);
            n++;
            }
        }
        for(i=0;i<n-1;i++)
        	for(j=0;j<n-i-1;j++)
    	    {
                if(strlen(str[j])>strlen(str[j+1]))
    		    {
                   strcpy(t,str[j]);
                   strcpy(str[j],str[j+1]);
                   strcpy(str[j+1],t);
                }
            }
        for(i=0;i<n;i++)
    	{
            printf("%s ",str[i]);
        }
    }

  • 您还可以看一下 李月喜老师的企业微信开发第三方应用开发篇课程中的 我是选择网页应用还是小程序小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    指针中的左值和右值是指针表达式中的两种不同类型的操作数。左值通常是可以寻址的内存位置,即可以被取地址的对象,而右值是指表达式的值。在指针中,左值通常是指针变量本身或者一个指针指向的可寻址内存位置,而右值是指向一个地址的表达式或者指针操作的结果。

    在C语言中,指针变量可以进行取址、赋值、指针运算、函数参数传递等一系列操作。左值通常用于这些操作中,因为它可以提供一个内存位置给指针进行操作。而右值则是指针变量的值本身,或者是一些表达式的值,比如一个地址表达式或者一个使用了指针的运算操作的结果。

    指针中左值和右值的区别在于它们的使用方式不同。左值可以被赋值、取址、用于指针运算等一系列操作,而右值一般用于表达式中的计算操作。左值和右值之间的关系可以通过取地址操作来获得一个左值,并将它赋值给一个指针类型的变量来实现。

    下面以一个示例来介绍指针中的左值和右值的应用和区别:

    #include <stdio.h>
    
    int main()
    {
        int a = 10, b = 20;
        int *p = &a; //定义一个指针p,指向变量a
        printf("a=%d, b=%d\n", a, b); //输出a和b的值
        *p = b; //将p指向的内存位置的值修改为b
        printf("a=%d, b=%d\n", a, b); //输出a和b的值
        return 0;
    }
    

    在上面的示例中,先定义了两个整型变量a和b,然后定义一个指针p,初始化为&a,即指向a的地址。接着,用p = b操作将p指向的内存位置的值修改为b。这里p是一个左值,表示p指向的内存位置;而b是一个右值,表示它的值。所以这个语句将b的值赋给了p指向的内存位置,即将a的值修改为b的值。最后输出a和b的值,验证操作的正确性。

    对于这个问题,建议在回答之前先对指针相关的基本概念进行复习和巩固,包括指针的定义、取址、赋值、指针运算、函数指针等常用操作。同时,对于左值和右值的概念也需要有一个清晰的认识。对于问题的回答,可以采用类似上面示例代码的方式,具体解释和展示指针中左值和右值的应用和区别。如果遇到其他比较具体的问题,也可以通过查阅相关资料和引导对方进一步明确问题的具体内容,然后给出相应的解决方案。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^