c语言中字符数组并没有规定最后一个字符为'\0',甚至可以不包含'\0',添加'\0'作为结束标志是针对于c语言对字符串的处理而言的,因此,字符数组中最后一个字必须为‘\0’是错误的。C语言中没有字符串类型,字符串是存放在字符型数组中的。在C语言中,是将字符串作为字符数组来处理的。为了测定字...
main函数内声明的变量是局部变量,不初始化的话编译器不会自动初始化的,比如b这个数组并没有进行初始化...
所以char[]="hello"的strlen和sizeof不同,前者是5后者是6就因为多了一个'\0'。而且为什么char[]="hello"没有越界,因为char[]并没有指定数组长度,他是变长的。最后补充一点char[4]="hell"是数组越界,是一个错误的字符串使用方式,一些编译器在编译时严格上会报告警或错误。但如果char[4]不...
只要你明确知道char数组存放字符串的格式就可以了。它是在字符串的最后一个字符的下一个字符处,存放一个“串尾符”即'\0'。所以,只要找到这个“串尾符”---'\0',然后再把它的前一个字符(即原字符串的最后一个字符)修改为'\0',就可以啦!#include#includeint main(){ char s[80]="G...
可以,但是没有多大意义。char num[]="asdf";int i, n = strlen(num);for(i=0;num[i]!='\0';i++);这个for循环就是来计算num的长度,访问num[n]是没问题的 但是对于int num[]={1,2,3,4};对于数组num,你访问num[4]就是没有意义的 ...
\0是字符串的结束标记 没规定说 char数组最后一个字符必须是\0 只不过你的最后一个字符不是\0的话 你用s%这类的输出控制的时候会越界出乱码就是了
根据这你你可以应用到你的程序中:int arr[5] = {2,4,5,3,23};int *p = arr;p = p +4; //注意这里是数组的大小减1.此时p的指向是数组的最后一个元素的位置,即23在内存中的位置
其次,不留0的位置,那么该数组的最后一个成员就是'E';只有你把它当成一个字符串使用的时候才可能发生问题。比如用它printf("%s", c)这样输出,因为后面没有0结束符,可能输出乱码或直接挂掉。不把它当字符串用的时候,它和char c[5] = { 1, 2, 3, 4,5};这样的定义没有区别。请采纳,...
首先要知道char str[10]里的str到底是个什么。在纯C语言中,字符串是以字符数组的形式存放的,标准C...
只有char型数组最..这里int型的数组就可以直接用sizeof算出元素个数但是char型的数组要多减掉一个\0ddd