C语言指针问题。

很简单的问题。
int (*p)[4]和int *(p[4])的区别是什么?

int (*p)[4],定义一个指向含有4个整数的指针变量。相当于int *p; int a[4]; p=a;
int *(p[4]),定义一个含有4个元素的数组,该数组中存储的是指向整数的指针类型。

看个例子:
#include<stdio.h>

int main()
{
int a[]={1, 2, 3, 4, 5, 6, 7, 8};
int (*p)[4]=a;
int *(p1[4])={a, &a[1], &a[2], &a[3]};
int i=0;

for(i=0; i<4; i++)
printf("(*p)[%d]=%d\n", i, (*p)[i]);
for(i=0; i<4; i++)
printf("*(p1[%d])=%d\n",i, *(p1[i]));

return 0;

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-06
int (*p)[4]是指指针p指向的数组a的第五个数,即a【4】;
int *(p[4])定义的是一个指针变量,指向的是a【4】,即a【4】的地址&a【4】;
第2个回答  2011-06-06
int (*p)[4]
定义指针p,它指向有4个整数元素的数组
int *(p[4])
定义 4个元素的数组p,里面存储整型指针

参考c语言谭浩强第三版268页本回答被提问者采纳
第3个回答  2011-06-07

你那是在swap内部交换了x,y,函数返回后,在swap内的改变不影响main函数中的x,y
如果改成下面的方式,或许可以。
void swap(int * &x,int * &y)

{
int *temp;

temp=x;

x=y;

y=temp;

}