- 主题:有办法求含有\0的字符数组的长度嘛?
字符串,要么有单独的变量存放其长度,要么有结束符。
C里的字符串约定的结束符是0,strlen()等字符串函数假定传入的参数是遵循这个约定的。
不按这个约定,那就是自己山寨了一个“字符串”,或者不叫字符串,而只是一个char array。
静态array的长度不是求的(不是运行期求),而是定义变量时指定的(通过编译期的sizeof等获得)。
只有动态array的长度是运行期计算的。
所以,要区分三个东西:
1、以零结尾的字符串
2、静态的char array
3、动态的char array
--
修改:z16166 FROM 61.48.130.*
FROM 61.48.130.*
C的动态数组有两种,一种在堆上,就是malloc得到的,一种在栈上 char a[x];
【 在 sqsl 的大作中提到: 】
: 对,我问的是字符数组的情况,字符串中间不会有\0
: 您说的动态数组指的是malloc之类的库函数生成的数组嘛?
:
--
FROM 61.48.130.*
可以的,栈上的变长数组Variable Length Arrays (VLAs),C99的内容
不过大数组一般不推荐在栈上,容易栈溢出
【 在 vieux 的大作中提到: 】
: 还有 char a[x] 这样的用法?
: 我以前学的只能这样用:
: #define BUFLEN 1024
: ...................
--
FROM 61.48.130.*