字符串指针变量的问题

    1. char *p;
    2. p = "这是字符串常量"
    1. "这是字符串常量" 只要""包裹的就是字符串常量,是存储在静态存储区的

      当字符串常量赋值给字符串指针的时候,就把首字符的地址赋值给字符串指针变量。 所以字符串指针变量存储的是字符串首字符的地址。字符串名本质也是首字符的地址

    2. 如果定义字符串指针变量的时候,没有初始化,默认是随机分配一个垃圾值地址给指针变量,这块地址 我们是没有写入权限的,所以*p 只能读取 不能写入,当我们没有初始化的时候访问字符串指针变量的时候,实际上访问的是垃圾值地址的起始地址。

    3. 因为是字符串指针变量,所以p只能存储地址,所以scanf是不能直接对p写入的因为scanf是值传递的。