字符串的赋值
char *str = "hello"; //编译也能通过运行正常(但是在g++中编译警告:建议前面加const)最新的编译器是会报错的
char str[] ="hello"; // 这个是最合法的写法
字符串的问题主要是考察内存的理解
**“hello”**字符串是存在文字常量区,str指针存放在栈区
代码示例:
#include <stdio.h>
int main()
{
char str1[] ="hello";
*(str1+1) ='i';
printf("%s\n",str1);
return 0;
}
Result:hillo
str1[ ] =“hello”
字符串数组在等于字符串时,相当于复制一份样本 放入到字符数组中,这里面的值是可以修改的(实质是改数组里面(栈)区的值)
*str =“hello”
char指针指向"字符" 指向部分还是在文字常量区如果直接通过指针修改字符串是不可以的,会报错。
strcpy
strcpy用法 :*str =“hello” 之后再用strcpy(str,“world!”),是可以的,之前的hello还是存在文字常量区(等到整个函数运行完之后销毁),只不过实质是令str指针指向另一个新建好的字符串常量。