谁能帮我讲下,char a[6]="china";char *a="china";的区别,讲的详细点,超详细的,里面要降到const是什么,

还有什么静态常量区,还有stract()这个做什么的

char a[6]="china"; 这个是将a数组初始化 即 a[0] = 'c' a[1] = 'h'.... a[4] = 'a' a[5]= '\0'
char *a="china"; 这个是将字符型指针a 指向静态字符串 "china" 是指向内存中静态区的

在操作的时候 char a[6]="china"; 可以改变数组中元素的值 a[0] = 'f' a[1] = '4' 这样的操作都是可以的
char *a="china"; 指向的是静态区域 静态变量是不允许修改的 所以这里的值是不能改变的 若 a[0] = 'f' 会报错追问

对了 ,那我 a=a+1;不是能通过么,这个是叫做赋值么,还有那个a[0]='f',是叫做用指针修改静态区域的内容么 ,还有就是,这个可以a[6]="china"到底保存的是首地址,还是,china,我好像听说什么保存首地址不知道是指针还是数组,还有就是如果保存的是首地址,数组的和指针的一样么?

追答

a=a+1 是说指针的那个吧 这个是可以的 因为你这样操作的是地址 而不是地址指向的那片静态区域的值
a[6]="china" a是首地址
char *a="china"; 这个a也是首地址。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-05
第一个是字符窜,分配了存储空间
第二个事指向字符窜的指针,没分配存储空间。“china"在存储空间任何地方。
const是把变量限制为常量
第2个回答  2012-11-05
很久不玩C了。

a[6]应该是一个指针指向一个长度为6的字符串数组
*a应该也是一个指针,但是指向a在内存的首地址
const应该是指定义一个只读的变量,记不清了,应该是吧?
stract好像是字串操作用的,具体怎么玩忘记了。
第3个回答  2012-11-05
第一个是先开辟了一个存放六个字符的数组,然后往里面存china。另外一个是 定义了一个字符指针a,然后随机分配了一块内存给它。存如china a指向这个字符串的第一个字符所在的内存。效果一样
第4个回答  2012-11-05
没分,不给你讲追问

你先讲我给分

相似回答