这语句什么意思,请各位解读一下

C->last=A.last>B.last?A.last:B.last;

三目运算符,把比较结果赋值给C的last属性

给C->last赋值为A和B->last的较大值

c函数直接给last赋值:如果A.last大于B.last则返回A.last,否则返回B.last

首先,整体是个三元运算符
a>b?a:b
当a大于b时,返回a,否则返回b
返回的值赋值给c
再看A.last,B.last,C->last
A,B是结构体对象,所以用点访问成员
C是个指针,所以用->符号访问成员

比较两个结构体A和B中的last成员变量的大小,将较大的值赋给另一个结构体C的last成员变量。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7638181
  • 这篇博客也不错, 你可以看下按照下列格式,打印图形
  • 除此之外, 这篇博客: 猿创征文| 指针,这还拿不下你?中的 一、字符指针 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 前面我们介绍了指针类型中有整形指针、字符指针、浮点型指针……这里为什么要把字符指针特别拿出来介绍呢?因为字符指针还有一种特殊用法。

    int main()
    {
        const char* pstr = "hello bit.";//这里是把一个字符串放到pstr指针变量里了吗?
        printf("%s\n", pstr);
        return 0; 
    }
    

    注释:这段代码很容易误认为是把字符串 hello bit 放到字符指针 pstr 里了,但是本质是把字符串 hello bit. 首字符的地址放到了pstr中。这里用const修饰是因为"hello bit."是常量字符串,不能修改。

    📝一道面试题

    #include <stdio.h>
    int main()
    {
        char str1[] = "hello bit.";
        char str2[] = "hello bit.";
        const char *str3 = "hello bit.";
        const char *str4 = "hello bit.";
        if(str1 ==str2)
     printf("str1 and str2 are same\n");
        else
     printf("str1 and str2 are not same\n");
           
        if(str3 ==str4)
     printf("str3 and str4 are same\n");
        else
     printf("str3 and str4 are not same\n");
           
        return 0; 
    }
    

    分析:str1str2两个数组被初始化相同的值,str1和str2为数组名代表首元素的地址,对于数组来说每次初始化都会开辟独立的内存空间,由于数组str1和数组str2分别占据不同的内存空间,即首元素地址各不相同,所以str1不等于str2。对于str3str4,初始化为常量字符串,由于常量字符串不可修改,所以从内存优化的角度来说,在内存中每个常量字符串只存在一份即可,即str3和str4对应的是同一块内存空间,故str3和str4相等。