wang815309286 发表于 2016-10-12 23:05:28

请问while(*t++)循环中当*t的值等于0时,t还进行++操作么

#include<stdio.h>
int fun(char *s);
int main(vodi)
{
        char *name2 = "alksj";
        printf("fun(name2)=%d\n",fun(name2));
        printf("sizeof(name2)=%d\n",sizeof(name2));
        printf("sizeof(int)=%d\n",sizeof(int));
        return 0;
}
int fun (char*s)
{
        char *t=s;
        while( *t ++);
        return (t-s);
}
就是个这个代码有几个问题,麻烦大家帮我解答下,不胜感激;
1:while(*t++)循环中当*t的值等于0时,t还进行++操作么
2:为什么name2指针sizeof(name2)的大小是8个字节呢?对于地址而言大小不是4个字节么
3:fun()这个函数得功能是计算字符串的长度还是字符串所占用的内存字节的个数(我觉得是所指字符串占用内存字节的个数,毕竟还有个'\0',但是答案说是字符串的长度。。)

Krant5 发表于 2016-10-13 07:57:36

1.进行
2.你用的64位编辑器,所以地址是8位。自己看清楚GCC版本。
3.你可以说是字符串长度加1

huabcdf 发表于 2016-10-13 19:21:56

楼上正解,补充下问题1:
++运算符在后面时,先运算,再自增,因此表达示的值在解引用的时候,指针t 就己经加1了。

orino 发表于 2016-10-13 19:52:23

右自增运算符的优先级高于指针运算符
页: [1]
查看完整版本: 请问while(*t++)循环中当*t的值等于0时,t还进行++操作么