strtok引起的char* a 与 char a[] 思考
时间:2010-08-24 来源:beyondzsq
void testStrtok(){ |
strtok的应用可参见:http://www.cplusplus.com/reference/clibrary/cstring/strtok/
主要的作用是将字符串str 按 字符delimiters划分成多个token;功能类似于java中的split,但是它是一个个的返回,不是返回链表。delimiters中可包含多个字符。划分后,str的内容将会改变。、
当给strtok传递参数dateTime2时,将收到SIGSEGV信号,表示非法的内存访问。而dateTime则不会。
究其原因,是因为dateTime2指向指向的是一串“字符串常量”。其值是不能改变的。如:dateTime2[2]='1'也将收到SIGSEGV的信号,同样的非法访问内存。而strtok函数正是需要修改其参数str的值:将分隔符处设置为NULL。
因此,出现了以上的非法内存访问。
相关阅读 更多 +