做题目时候遇到一个问题代码如下:
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。