sizeof(strb++); 的问题 为什么strb没有++
来源:互联网 发布:doodle jump java 编辑:程序博客网 时间:2024/05/17 22:09
#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
0 0
- sizeof(strb++); 的问题 为什么strb没有++
- char *str[3] = {"stra","strb","strc"};问题?
- ARM的六大类指令集---LDR、LDRB、LDRH、LDM、STR、STRB、STRH、STM
- ARM的六大类指令集---LDR、LDRB、LDRH、LDM、STR、STRB、STRH、STM
- ARM的六大类指令集---LDR、LDRB、LDRH、LDM、STR、STRB、STRH、STM
- 格式化读取文件fscanf(fp, "%s", strB)
- strA 和strB 两个String作出strC,strC是组合了strA和strB,并且去掉头尾重复单词
- 为什么Java中没有sizeof()
- 没有括号的sizeof,sizeof为关键字
- sizeof和sizeof的问题
- sizeof问题,为什么不是4+8+4?
- sizeof struct为什么总是一个问题
- 你为什么没有发现问题?!
- 在没有对象的情况下使用decltype和sizeof问题的解决方案
- SIZEOF的问题
- sizeof 的相关问题
- 再谈sizeof()的问题
- 关于sizeof的问题
- WebStorm初始设置
- leetcode找循环链表的循环点
- WinRAR v5.40 官网无广告弹窗正式版
- abap 性能
- JZOJ4739 【雅礼联考GDOI2017模拟9.2】Ztxz16学图论 莫队加并查集
- sizeof(strb++); 的问题 为什么strb没有++
- C#笔记
- 详解大端模式和小端模式
- Android lint 配置
- 递归和非递归方式合并有序链表
- android跨平台开发系列之-初识webview(一)
- Unity3D调用Android SDK
- 使用Python显示YUV420图像
- CSS之3D变换