当前位置: 代码迷 >> C语言 >> int *p[4]与int (*p)[4]有什么不同?
  详细解决方案

int *p[4]与int (*p)[4]有什么不同?

热度:376   发布时间:2007-12-09 13:23:47.0
因为 int (*p)[4;]  定义的是行指针p, *p就相当于是第一行的行首地址,因为*p是地址,而1是整型数,不能这样赋值,所以*p=1;不正确.
而*(*p)就是*(*p+0),在地址前加了取地址符号*,即表示是第一行的首元素的值,是int型数据,所以可以用*(*p)=1 ;赋值.
----------------解决方案--------------------------------------------------------
int  * p[4];     定义指针数组P,由4个指向整形数据的指针元素组成.
int  (* p)[4];      P为指向含4个元素的一维数组的指针变量,他常用在处理二维数组.如:
int a[2][3];
p=a;                p为指向二维数组的一行.
----------------解决方案--------------------------------------------------------
int *p[10]   是数组 ---> 数组元素类型是 int *

int (*p)[10] 是指针 ---> 指针指向数组
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]redice[/underline][/bold] 于 2007-12-8 18:29 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1138518&ptid=191126][/url]
int  (* p)[4];      //   p 指针 int [4]  ,即 p 指针 4 个 int类型

请问怎么使用这个指针?
我尝试*p=1;编译器报错了!
warning C4047: '=' : 'int [4]' differs in levels of indirection from 'const int ' ...





回家了,手边没一本资料,我自己也不知道说的对不对,自己的基本功也很不扎实.西西!
int *p=&1;
或者
int *p;
*p=1;或者p=&1;常量和变量自己注意.
这应该可以吧..
指针数组和,数组指针
一般来说*p[]
用于字符串,他每个元素就是一个指针,所以引用他的时候就是输出p[1]就直接输出了第1行对应的整个字符串.
*p[]={
"sdsd",
"sdsd"
}
(*p)[]和行指针在一起用.也就是他只能被赋予行的地址

比如
a[][3]={"sadfsf","sdfsdf","sdsd"};
p=a;
p=a+1;

个人胡说..不要相信

[[italic] 本帖最后由 dousao 于 2007-12-9 16:14 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
还有我现在的感觉是,学c很大部分人不是用他来开发程序的吧?很多人都是以这个入门然后学c++或者java;如果你最终目的是java(现在最流行的语言.从c++发展,偏网络),可以不在指针这里学怎么样.因为java已经没有了指针了.
如果将来学c++的话,那到要好好看看.

还是个人胡说.不要相信
----------------解决方案--------------------------------------------------------
谢谢大家了
我以前主要使用VB以及ASP技术,由于项目需要不得不恶补C语言 还望多多指教
----------------解决方案--------------------------------------------------------
  相关解决方案