int (*p)[4]和int * p[4]到底是神马意思啊

int*p[4]中定义的p是二级指针吗,int(*p)[4]是不是既可以表示一级指针又可以表示为二级指针... int *p[4]中定义的p是二级指针吗,int(*p)[4]是不是既可以表示一级指针又可以表示为二级指针 展开
 我来答
tianyunperfect
2013-01-24 · 超过13用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:27万
展开全部
不是的,*p[4]表示长度为4的指针数组(本质是一个数组,就当一个数组用就行了),而(*p)【4】表示指向长度为4的数组的一个指针(本质是一个一级指针),当然他们的具体更加详细的区别(指针数组和数组指针)可以参考你的学习资料啦,而二级指针的一个标志是有两个**的,在实际应用中一般很少用到二级指针或多级指针,用一级指针指向二维数组(如(*p)【3】【4】)来进行排序的比较常见,希望可以帮助你,有什么不懂得可以追问
来自:求助得到的回答
_whales
推荐于2017-09-05 · TA获得超过2279个赞
知道大有可为答主
回答量:1814
采纳率:85%
帮助的人:480万
展开全部
int *p[4]中定义的p是有4整型指针的数组

int(*q)[4] q是指向具有4个整型元素的数组的指针!
用法
int f[10];
int x[4],y[4],z[4],w[4];
int a,b,c,d;
int *p[4] ={&a,&b,&c,&d};
p[0]= &a;p[1]=b;p[2]=&c;p[3]=&d;



int *p[4] ={x,y,z,w};

p[0]= x;p[1]=y;p[2]=z;p[3]=w;

//*(p[0]+1) == x[1]
p[0]+1 == x+1;

都是可以的;
初始化:
int(*q)[4] ={&a,&b,&c,&d};//不可以int(*)[4]与int* [4]不兼容;
int(*q)[4] ={x,y,z,w}; ;//不可以int(*)[4]只是一个指针;

int(*q)[4] =x ; //不可以 q 是int(*)[4]; x是int* 不兼容;

int(*q)[4] =&x ; //q,&x 都是 可以int(*)[4] ;
int(*q)[4] =&f ; // 不可以q 是 int(*)[4],&f是int(*)[10];不兼容

赋值:
q =x ; //q 不可以 q 是int(*)[4]; x是int* 不兼容;

q ={&a,&b,&c,&d};//不可以int(*)[4]与int* [4]不兼容,不可以这样赋值;

q ={x,y,z,w}; ;//不可以int(*)[4]只是一个指针,是个4个整型元素数组的指针;
//{} 内是int *[4] 是个int *指针的数组
q =&x ; //可以q,&x 都是 int(*)[4] ;
q =&f ; // 不可以q 是 int(*)[4],&f是int(*)[10];不兼容
*q 是个四个元素的数组
(*q)+1 数组第一个元素的地址
(*q)[1] 数组第一个元素
追问
定义时的意思我基本上都明白,就是用指针变量的时候感觉很糊涂
追答
一般情况,定义一般指针就可以了!
数组指针作用不是很大,因为对数组的引用通常是不包括数组长度的,
参数传递时长度要另外传递进来。
而数组指针把长度固定死了。不适宜传给函数。
而C又没有可变数组,数组指针只能指向定长数组。所以很少使用。
实际上只要看到,那种写法,能够理解就可以了!
真正是用的都是一般的指针和指针的指针
也就是一级,二级和多级指针
二级以上使用的也很少!
倒是函数的指针用的还多些!
所以只要理解指针本身的概念就够了,指针就是带类型的地址!
可以通过这个地址获得地址中的值 ( *p )!
变量和数组(变量族)都有一个地址,
&用于获取该地址
* 用于取指针所指地址中的值。

变量赋值,是向该地址存入所赋的值,
赋值给别的变量是
把该地址中的变量的值
存入另一个变量的地址中,
所以可以通过地址本身存取变量的值
指针的值是一个地址,通过指针的值( 就是该地址)可以读写地址中的值。
如果是函数指针,可以调用函数(函数名本身就是函数指针)。
这就是指针的用途。
指针也有地址他的地址可以付给高一级的指针
一级指针的地址可以赋值给二级指针

也就是这些了!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6fe74e2
2013-01-24 · TA获得超过6591个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:215万
展开全部
int *p[4]定义一个指针数组,这个数组的每个元素都一个指向int数据类型的指针。
比如:
int a=1,b=2,c=3,d=4;
int *pa=&a,*pb=&b,*pc=&c,*pd=&d;
int *p[4]={pa,pb,pc,pd};
int (*p)[4]定义一个指向一个一维数组的指针,这个一维数组数据类型是int,共有四个元素。
比如:
int a[4]={1,2,3,4};
int (*p)[4];
p=a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式