On the other hand, the declaration char *p = "abc";definespwith type ‘‘pointer tochar’’ ...
记住,常量不能被修改。 尤其是字符串常量。 今天,我在已写好的通用双链表的基础上,写了个修改字符串的函数。编译结果总是出现 段错误问题, 一般是访问了不能访问的内存。 我想了想,发现自己一直在尝试修改常量。 好一个晕!!! 于是,我在这个函数前加了个 复制字符串的语句(linux. 下的 strdup, 来自 string...
<高质量C C++编程指南>这本书上说: 指针p 指向常量字符串(位于常量存储区),常量字符串的内容是不可以被修改的,企图修改常量字符串的内容而导致运行错误。所以这个问题出现的原因是char*p=”abcdefghi”,赋值的是字符串常量,存储在常量存储区,而常量存储区的内容是无法修改的。 3.如果使用数组来代替的话,数据就...
野指针是指未初始化的指针,指向随机内存地址,可能导致程序崩溃。堆空间是动态分配的内存,需要手动释放,而栈空间是自动分配的内存,函数结束时会自动释放。字符指针可指向字符串常量或动态分配的内存,而字符数组在声明时需要指定大小。const可用于声明常量,避免被修改
并不是不能修改 而是 修改字符串字面量的结果是未定义的 这意味着 可能这个编译器可以修改 可能换一...
Undefined behavior,看起来好像只是行为未定义而已,实际上可能产生所有后果,包括但不限于程序闪退、死机...
字符串常量之所以称之为常量,因为它可以看作是一个没有命名的字符串且为常量。存储于静态数据区。 常量就意味着它具有“只读”属性,不允许被修改。 静态数据区,是相对于堆、栈等动态数据区而言的。 静态数据区存放的是全局变量和静态变量。 全局变量分为常量... ...