2018 -0522 C 语言 ->

做题目时候遇到一个问题代码如下:

 struct bem{
        int a;
        char type[30];
    };

    struct bem *pt;
    struct bem deb ={
        5,
        "abc"
    };
    pt = &deb;
    printf("%s \n",(pt->type)+2);

    这里问题问输出什么,一开始我认为是不能输出,认为 pt->type 是取结构体的成员,而结构体的成员是char 类型,那怎么把char类型的与2相加。

    这里忽略了一点 %s ,首先%s输出字符串的过程是:

从首地址开始逐字节寻址,把存储单元(一个字节)内的数据转换为ASCII字符格式输出。

    所以%s 的输入是地址形式,所以+2代表结构体成员type的首地址加2,那也就是从c开始打印,输出结果为c。

猜你喜欢

转载自blog.csdn.net/qq_36324796/article/details/80401896