我们知道,在C中,对指针类型取地址的话,取到的是这个指针变量的地址;而对数组类型取地址的话,无论多少次取地址,取到的值都是一样的,值都等于数组元素的首地址。
这就引发了一个问题,我们看下面这个例子。
typedef int arr[50];
arr c;
void f(arr *b)
{
cout<<*b<<endl;
}
int main()
{
cout<<c<<endl;
cout<<*(arr *)c<<endl;
f((arr *)c);
int a=5;
cout<<*(arr *)a<<endl;
return 0;
}
输出的前三个结果都是一样的,都是数组的首地址,最后一个输出的结果是5,也就是a的值。
我们可以看出,对于一个指向数组的指针类型解指针的话,得到的还是它本身,但如果是其他类型,例如int *
类型就不行了。
Comments
注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。