//指针和数组之间的关系
#include <stdio.h>
int main(int argc, char *argv[])
{
char name[]="it";//重要
name[0]='T';//字符串变量。放在栈里面,可以随便改
printf("%s\n", name);//这个时候输出Tt。改变了首字符
// "it"= 'i' + 't' + '\0' 等于三个字符组成
char *name2= "it";//指向了首字符 i。而不是指向整个字符串,因为char类型是字符
//而如果 想要实现 name[0]='T';,可以修改为
// *name2 = ‘T’,这种方式是不对,不可更改指针 。这个是字符串常亮不能改
//要想输出整个数组:
printf("%s\n", name2); //%s会从name2开始一个字符一个字符输出直到遇到\n
return 0;
}
/*
内存分五块
1. 常量区:常用字符串
2. 堆:对象 。
3. 栈 :存放局部变量 。 函数内部存放的变量
所以随便改:
如果用数组存储字符,数组里面
的字符是可以更改的,如果用指针间接操作字符,里面的字符是不能更改的
掌握:
1. 定义字符串的两种方式
a 利用数组:char name【】= ”it“;
特点:字符串里面的字符串可以更改
适用场合:字符串的内容需要经常修改
b。 利用指针: *name2【】= ”it“
特点:这个字符串是一个常量字符串,里面的字符是不能更改的。
使用场合: 字符串的内容不需要修改,且经常使用。频繁的开辟内存会消耗资源,而这种不需要新开辟空间。
*/