如果char str【100】=“Hello”那么sizeof(str)=??再如果char str【】=“Hello”那么sizeof(str)=??另外一个问题 如果a=4,(a++)+=a是正确的表达式吗?如果不是为什么?,(++a)+=a是正确的表达式吗?如果是,又为什么,表达式的结果又是什么呢???
那(++a)+=(a++)能不能具体分解一下步骤???结果又是多少呢
追答还是不要纠结这样的问题了吧,这样的问题毫无意义,在实际变成中也不会用到,不过你问到了,我还是给你解释吧
(++a)+=(a++);
相当于3句:
++a; // a=5
a += a; // a=10
a++; // a=11
char *a;
char *b;
char c【】=“LUCENT”;
a=malloc(7);
strcpy(a,c);
b=a+sizeof(c)-4;
*(++b)=’\0‘;
printf(”6:%d\n“,strlen(b));如果把strlen改为sizeof输出结果又是多少呢?
我会提高悬赏值,请您帮忙解答~
悬赏不是问题,重要的是你要懂。
这个问题,你可以放编译器里面试试就知道结果是多少
b是一个指针,sizeof一个指针,在32位的机器里面就是4,因为一个指针是4个字节的
如果把*(++b)=’\0‘;这句话去掉,printf(”6:%d\n“,strlen(b));和printf(”6:%d\n“,sizeof(b));的结果分别是多少呢????
追答你放编译器里面试试不就知道了
6:3
6:4
请按任意键继续. . .
指针sizeof永远是4(32位机器)
char *a;
char *b;
char c【】=“LUCENT”;
a=malloc(7);
strcpy(a,c);
b=a+sizeof(c)-4;
*(++b)=’\0‘;
printf(”6:%d\n“,strlen(b));如果把strlen改为sizeof输出结果又是多少呢?
我会提高悬赏值,请您帮忙解答~
应该写错了,printf(”6:%d\n“,strlen(a ));才有意义啊
恩,输出strlen(a)到\0就会截止,所以,输出是:4.
如果换成sizeof,因为a是指针类型,sizeof计算的是指针类型的空间大小,而不是指针指向内存空间的大小,所以,不管指向多少内存,sizeof都是4.
两个结果一样,但是意义却完全不同啊
如果a不是指针类型呢,sizeof应该为多少呢
追答不是指针类型,你意思是什么,int,char,float,double类型么?
要看机器位长的,现在32位的机器上,他们分别占4,1,4,8字节。
不是这个意思,我是说把此题目的char *a;改为char a【】;最后的printf(”6:%d\n“,sizeof(a));输出是多少呢
追答了解你什么意思了,不过这个例子不太好,因为char a【】,定义数组的时候就要定义数组大小了。这个大小就是sizeof的值。
不知道你对堆和栈有没有了解,如果了解,那么记住:sizeof只计算栈上的空间。
我对栈上空间这个词确实有点模糊,不过还是非常感谢您的回答!!!!
char *a;
char *b;
char c【】=“LUCENT”;
a=malloc(7);
strcpy(a,c);
b=a+sizeof(c)-4;
*(++b)=’\0‘;
printf(”6:%d\n“,strlen(b));如果把strlen改为sizeof输出结果又是多少呢?
我会提高悬赏值,请您帮忙解答~