您的位置:首页 > 其它

sizeof(strb++); 的问题 为什么strb没有++

2016-09-03 12:53 218 查看
#include <cstdio>
#include <cstring>

void func(char str[50])
{
printf("str:%s\n", str);
printf("A = %d, B= %d\n", sizeof(str), strlen(str));
}

int main()
{
char stra[] = "HelloWorld";
char* strb = stra;
printf("C = %d, D = %d\n", sizeof(stra), sizeof(strb++)); // strb并没有++
sizeof(strb++); // strb并没有++
sizeof(strb++); // strb并没有++
printf("strb++:%s\n", strb);
func(++strb);
printf("E = %d, F = %d\n", strlen(stra), strlen(strb++));

}

/**
输出:
C = 11, D = 4
strb++:HelloWorld
str:elloWorld
A = 4, B= 9
E = 10, F = 9
*/

sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。
它并不是函数。根据C99规范, sizeof是一个编译时刻就起效果的运算符,在其内的任何运算都没有意义, sizeof(strb++);
在编译的时候被翻译成 sizeof((strb++的数据类型)) 也就是 sizeof(char); 然后才会继续编译成最终的程序,当然在最终程序执行的时候,自然不会执行任何strb++或++strb了。

参考: http://zhidao.baidu.com/link?url=c3X2_o8ELz-yHeQI30r5oSpvsWnyRjM2M0tINXY3Qk_qj8ixZCegN--f5i6spQmvvXY2u3G62_hBk3q1Ykbm6qf5i6spQmvvXY2u3G62_hBk3q1Ykbm6q
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sizeof
相关文章推荐