赞
踩
例如: char *p=“hello”;和char c[10]="hello"有什么区别呢?
字符串常量存储在数据区中的常量区,好处是相同的字符串,比如hello只会存储一遍,常量区的含义就是字符串本身是不可修改的,所以我们称之为字符串常量,hello存在字符串常量区,占用6个字节,有自己的首地址。
char *p="hello"是将字符串常量"hello"的首地址赋值给p
char c[10]=“hello”,字符数组c在栈空间有10个字节大小的空间,这个初始化是将字符串hello通过strcpy给字符数组c
因此我们可以将c[0]修改为H,而p[0]拿到的是常量区的空间,所以不可以修改。
#include <stdio.h> #include <stdlib.h> int main() { //字符指针 指向常量区的首地址 char *p="hello"; //字符数组 等价于strcpy(c,"hello"); char c[10]="hello"; c[0]='H'; //p[0]修改的是首地址,不可以 // 字符串本身代表着地址 printf("p=%s\n",p); printf("c=%s\n",c); system("pause"); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。