数组和指针的一些小知识

来源:互联网 发布:redis java 教程 编辑:程序博客网 时间:2024/05/23 13:03

定义一个数组:int a[4] = {1,2,3,4};

a与&a[0]是等价的,都是数组首元素的地址----而不是数组的首址!

&a则才是数组的首址----尽管&a与&a[0]的值相同,但类型是不一样的.&a的类型是type(*)[LEN},而&a[0]的类型是type*。
&a+1的结果是a数组后的地址,也就是在数组首地址上再加上sizeof(a)的值。
a+1或者&a[0]+1的结果是&a[1],类型与&a[0]相同。
再看看type**与type(*)[LEN},两者类型是不同的,不要用二级指针的概念向上套.所以上面的**b=&a是错误的----指针类型的赋值要求类型严格一致,不存在象数值类型那样的隐式转换。
原创粉丝点击