return(s - str);//s = str ,既然 ++s遍历完str , 当读到'\0'退出循环 s不比str小吗?
#include
int getstrlen(const char * str)
{
const char *s;
for (s = str; *s; ++s);
return(s - str);
}
int main()
{
char s[80];
printf("请输入一个字符串: ");
gets(s);
printf("\n字符串长度为: %d\n",getstrlen(s));
return 0;
}
退出循环的时候,*s等于0x00,而s等于此时的地址,所以s比str大
追问不大理解 *s = '\0' 了 '\0'的地址是0x00吗? 与str的'\0'地址不一样吗?
追答s的初始值是str,也就是说s刚开始和str是同一个地址,然后s不停的++,最后停下来的时候当然就比初始值(也就是str)大啦
追问你的意思是*s当读到'\0'的时候 s还有加一次 才会退出循环 是吧?//那多加一次之后,s最后是'\0'还是什么?那原来的(str)放'\0'的位置放什么?
追答*s当读到'\0'的时候立刻就退出循环了,此时*s等于‘\0’,而s等于放'\0'的位置
追问*s当读到'\0'的时候立刻就退出循环了,此时*s等于‘\0’,而s等于放'\0'的位置// 都是'\0'啊,大哥啊,不是s不停的++,最后停下来的时候当然就比初始值(也就是str)大啦,//不理解啊
C语言中字符串结束符'\\0'就是0. 这句话有什么依据吗
'\\0'就是8位的00000000,因为字符类型中并没有对应的这个字符,所以这么写。在数值类型里就代表数字0。补充:这个你要去学下基础的,数值类型存储时,最高位决定正负号,其他位都为0可不就是0了么?'\\0'是转译字符,意思是告诉程序,这不是字符0,我要的是数字0的2进制直接放进来,因为acsii码的0可不是00000000 本...
C语言中字符串结束符'\\0'就是0. 这句话有什么依据吗
'\\0'是转译字符,意思是告诉程序,这不是字符0,我要的是数字0的2进制直接放进来,因为acsii码的0可不是00000000
C语言中\\0究竟有什么用?
结束符号‘\\0’,也可以表示成数字0。(字符'\\0'对应的ascii码就是0)这个结束符号有没有实际上不影响字符数组实际内容。只是让程序识别字符串到哪里算结束。特别是我们常用的一些关于字符串的函数,也是通过结束符号来识别字符串长度的。所以我们定义字符数组存放字符串,通常会多申请一个字符空间,用来保...
c语言中'\/0'能不能直接写成0
当然可以,其实'\/0'就是0 当然了'\/0'肯定不是'0'代码测试一下就知道了。可以去查ASCII码表。include<stdio.h>int main(){ char a = '\/0'; printf("%d\\n",a); return 0;}
C语言中,出现'\\0'的地方,我都用0来代替.
事实上,'\\0'的类型是char型,而0是int型,两者类型不同。之所以能通过是因为存在有隐式类型转换,即 char i=0;实际上编译器看作是 char i=(char)0;假设不允许这种隐式转换,那么代码第一句代码就会出错。个人认为,将'\\0'写成0将可能对阅读代码的人误导,害处不浅!强烈不建议!
C语言中'\\0'和'0'一样吗?
这个C语言中'\\0'和'0'不一样,‘\0’是字符数组或者字符串结束标志,系统在引用字符数组或者字符串的时候遇到‘\\0’就会结束,在进行字符数组初始化的时候,这个‘\\0’是自动加上去的,而‘0’可以作为字符数组的一个元素。C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C...
在C语言中 '\\0' 和 '\\n' 都是什么意思?
\\0是字符串才有的转义字符,字符是没有的。而且\\0是你输入完这句话(你肯定会按回车确定,这时候系统就知道你输入完了这句话)系统自动加上的。比如你对一个字符数组进行初始化(数组可初始化但不可赋值):字符:char a[5]={'c','h','i','n','a'};字符串:char a[6]={'c','h'...
C语言中 '\\o' 是什么意思?
'\\0'此处为零,在c语言中'\\0'代表ASCII码为0的字符,ASCII码为0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不做。可以用它来表示字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的作用。
c语言中\\0表示什么?
‘0’是字符0 对应ascii 码:30;3、0是数字0 对应ascii 码:00。比如说,把一个字符串赋值给数组:u8 str1[]={"cxjr.21ic.org"};实际上数组str1在内存中的实际存放情况为: c x j r . 2 1 i c . o r g '\\0' 这后面的'\\0'是由C编译系统自动加上的。所以在用字符串赋初值...
C里面'\\0'输出是什么
'\\0'在C语言中是作为一个“字符串的结束标志”,也就是说在输出一个字符串时,当遇到字符'\\0'时,表示字符串结束,就不再输出了,也可以理解为无法显示的字符。例如字符串“CYUYAN”共六个字符,但在内存中共占7个字节,最后一个字节'\\0'是由系统加上的,字符串是作为一维数组存放在内存中的,...