字符串常量与指针和数组的关系

来源:互联网 发布:杭州边锋网络怎么样 编辑:程序博客网 时间:2024/05/18 17:28

    定义指针时,编译器并不会为指针所指向的对象分配空间的,它只会为指针本身分配空间,除非在定义时就用一个字符串常量进行初始化

例如

char *p = "hello";


常量的本质:不占据任何存储空间属于指令的一部分,编译后不再更改。

此时字符串常量会生成一个指向字符的常量指针,说白了 这里的 “hello”指的是这个字符串常量的首地址,而不是这些字符本身,

它是存放在静态只读区,如果试图去修改这个字符串的值,程序就会出现未定义的错误

 

int *p = 1;double *f = 3.14;

因此,像上面两行代码就是错误的,因为赋值给指针的不是一个地址

类似的,我们也可以用一个字符串常量去初始化一个数组:

char a[] = "hello";

这种情况字符串的值是可以被修改的,因为它是一个变量

 

0 0