知识点checklist
1、 strlen()函数的返回值是什么类型的?
2、 字符串strlen() 的值,是否和他占据的内存空间相同?
3、 你是否知道strcpy 函数存在的潜在风险?如何避免?
4、 如果一个字符串没有字符串结束符,而调用str 开头的库函数,会发生什么?
5、 Strcpy(),strcat(),strcmp(),strncpy(),strncat(),strncmp()内部到底是如何运行的?这些函数到底对源字符串和目标字符串做了些什么?你是否观察过它们运行时两个字符串内存的变化?
6、 上面这些函数使用时,各有哪些需要注意的地方?
7、 你会几种字符串查找操作?
8、 c语言中有字符串这个数据类型吗?
9、 对字符串进行操作的时候,是否为字符串结尾符预留存储位置?不然的话容易造成非常访问内存。
Answer:
1. unsigned int类型。
2. 不是,比实际占用内存少1个字节,缺少'/0'占用的空间。
3. strcpy(string1,string2);将string1复制到string2中,这个复制包含'/0'。风险之一就是string2的长度比string1长的话,string1就不包含'/0',没有结束符号会在以后使用中带来很大的问题。
4. 函数会在内存中一直向下寻找'/0'字符,直至找到,导致访问越界。
5. 待添加。 6. 待添加。 7. 待添加。
8. C中是使用字符数组或者字符指针代替字符串的,其中字符指针是const的。 9. 不会自动预留,需要我们在分配空间时多分配一个空间。