a[] *a 的区别
在c中定义指针时;
a[] *a 的区别是什么:
int *a;
int a[];
char *a="123";
char a[]="123";
有区别吗?
[解决办法]
数组和指针的区别
[解决办法]
sizeof(a) 你就知道区别了
[解决办法]
char *a="123";
char a[]="123";
====
"123"是一个匿名char类型数组。一个数组可以隐式转换成首元素的指针。所以char *a = "123";是应用了这一转换的。a指向了"123"的第一个元素。
char a[] = "123";则是通过"123"这个数组来初始化数组a;
a是数组,所以可以转换成它的首元素的指针。所以在一些情况下,char *a;与char a[];会看起来是“一样的”;
但是完全不是。一个是数组,一个是指针。
不同的例:
1.sizeof(a);
2.char** p = &a;//如果a是数组则错。
[解决办法]
http://www.cnblogs.com/guyan/archive/2011/12/23/2299179.html
[解决办法]
在32位机器中,指针的长度永远为4,而数组的长度就不是了,用sizeof(数组名)查看!