/*
定义字符串的两种方式:
1.利用数组
char name[] = "it";
特点:字符串里的字符是可以修改的
使用场合:字符串的内容需要经常修改
2.利用指针
char *name2 = "it";
特点:字符串其实是一个常量字符串,里面的字符不能修改
使用场合:字符串的内容不需要修改,而且这个字符经常使用
*/
//字符串变量,存放在栈区
//"it" == 'i' + 't' + '\0'
char name[] = "it";
name[0] = 'T';//在内存中ffc1为
printf("name = %s\n",name);//输出结果为:name = Tt
/*
字节 数组 内容
ffc0
ffc1 name2 i
ffc2 name2 t
ffc3 name2 \0
*/
//指针变量 name2 指向了字符串的首字符
char *name2 = "it";
//*name2 = 'T';//这种操作是错误的,运行报错
printf("name = %s\n",name2);//
//指针数组(字符串数组)
char *names[5] = {"jack","rose","jake"};
//二维字符数组(字符串数组)
char names2[2][10] = {"jack","rose"};
补充内容:
1.栈:
存放函数内的局部变量,形参和函数返回值
2.堆:
对象
3.静态区(全局区):
4.常量区:
存放一些常量字符串,常量区的内容无法修改,而且会缓存起来,如果下次又用到了,会返回同一个常量
5.代码区