首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

归结几点数组名和指针变量名的区别(由于补充了一点,所以重发帖)

2013-01-21 
归纳几点数组名和指针变量名的区别(由于补充了一点,所以重发帖)在很多时候,对于指针变量可用数组方式操作,

归纳几点数组名和指针变量名的区别(由于补充了一点,所以重发帖)
在很多时候,对于指针变量可用数组方式操作,对于数组可用指针变量方式操作,可是指针变量和数组毕竟不是同一个东西,下面我们来归纳几点数组名和指针名的区别:
  以下的讲解基于如下这段代码:
    char a={'a','b','c'};
    int *p = a; 
1、指针变量名可以被赋值,数组名不可以被赋值。也就是说:p=p+1;是正确的,a = a+1;是错误的。
2、sizeof(p)的值为4,sizeof(a)的值为12。
  求指针变量的长度详见  http://birduu.com/211.html
    求数组的长度详见  http://birduu.com/220.html节。
3、对于定义的一个指针变量:char *p; 声明时写成 extern char p[n];(n=1,2,3...)的形式是不可以的;
   同样,如果对于数组形式的定义:char a={'a','b','c'}; 声明时写成 extern char *a;也是不可以的; 详见  http://birduu.com/431.html。
4、指针变量指向字符串和字符串数组的区别。
   字符串数组:char hi[] = "hello";它的数组元素是可以更改的。
   用指针变量指向字符串:char *hi="hello"; hello在静态内存区,因为静态存储区的内容是不可以被更改的,所以类似于 *hi=某个值 等赋值语句都是不被允许的。
   以上是概括,详细讲解在 birduu.com 这个网站的C语言专题上。 
[解决办法]
char a={'a','b','c'};
—— 这么写是想声明数组还是什么? 对吗?
sizeof(a)的值为12。
—— 确定sizeof(a)结果为12?

如果是总结,希望验证好结果再发出来,别误导读者,那个网站也别瞎参考,估计也不咋样 

热点排行