字符串指针变量的问题
char *p;
p = "这是字符串常量"
"这是字符串常量"
只要""
包裹的就是字符串常量,是存储在静态存储区的当字符串常量赋值给字符串指针的时候,就把首字符的地址赋值给字符串指针变量。 所以字符串指针变量存储的是字符串首字符的地址。字符串名本质也是首字符的地址
如果定义字符串指针变量的时候,没有初始化,默认是随机分配一个垃圾值地址给指针变量,这块地址 我们是没有写入权限的,所以*p 只能读取 不能写入,当我们没有初始化的时候访问字符串指针变量的时候,实际上访问的是垃圾值地址的起始地址。
- 因为是字符串指针变量,所以p只能存储地址,所以scanf是不能直接对p写入的,因为scanf是值传递的。