定义int(*p)[3]; 则定义了一个名为p的指针变量 它可以指向每行有三个整数元素的二维数组

现在提问。有人回答说,“p是一个指向有三个整数的数组的指针类型变量。p+1就是指向下一个三位数组。这样下去,不就相当于是二维数组了。”还有人说,“p指针每一次加1就相当于... 现在提问。有人回答说,
“p 是一个指向有三个整数的数组的指针类型变量。 p+1 就是指向下一个三位数组。 这样下去,不就相当于是二维数组了。”
还有人说,“p指针每一次加1就相当于把p中存的地址加6(前提是int类型占2个字节,在VC中是占4个字节)”

提问,
1.这个数组的最大能有多少行?p不停的加下去吗?
2.“p指针每一次加1就相当于把p中存的地址加6” 这能说明什么,为啥地址变化了。自动的就认为还是三个整数元素的数组?到底发生了什么变化?
没有行数规定。比如
void setT(int i ,double (*T)[5])
{
T[0][i]=1;
T[1][i]=2;
T[2][i]=3;
}
如此,并没有写要多少行啊
展开
 我来答
鄂冰濯玉
2019-12-24 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:26%
帮助的人:931万
展开全部
楼主你好!
首先(*p)[3]是一个指针数组,意思就是p这个指针是指向一个含有3个元素的数组的,那么p指针每一次加1就相当于把p中存的地址加6(前提是int类型占2个字节,在vc中是占4个字节)。
举个例子:
int
a[3][3];
int(*p)[3];
p=a;
//也就是把数组a的首地址存放到p中
那么p[1]就是a[1][0]的地址,p[1][0]就等于a[1][0],而p[1][2]就等于a[1][2];
这就说明了为什么是二维数组了
百度网友1a8fe55
2012-03-15 · 超过13用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:30.3万
展开全部
问题1:首先,这里只是定义了一个指针型变量,这个p是一个指向长度为3的整型数组得指针,那么这个数组最大有多少行,取决于先面这个赋值(int array[n][3];p=a;),在这里虽然n有多大,那么p就有多少行,它能不停得加下去,直到n-1;
问题2:这个是编译系统的问题了,就像我们下得所有C语言代码,计算机是不能识别的,因为计算机只能识别二进制,那么如何能让计算机识别大家写得C语言代码,就需要编译,这里就是语法规则,编译系统会按照我们定义的类型和数组范围进行地址上得变化,比如这个例子,首先用的是整型,加入编译系统认为整型是2个字节,这里数组长度是3,那么p+1相当于地址加了2*3=6,如果编译系统认为整型是4个字节(visual C++ 6.0就是默认整型4个字节 ),那么p+1相当于地址加了4*3=12,说到底,这个是编译系统需要考虑得问题,读者不用太过于追究,除非你准备开发编译器。希望我的回答你还满意。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xia1029920802
2012-03-15
知道答主
回答量:18
采纳率:0%
帮助的人:2.9万
展开全部
归纳起来就是int型或是float型都有系统规定的大小。不能超过这个规定的大小,否则就会溢出。

其次,电脑使用二进制来完成它的功能的,但是通过汇编语言,面向对象等的语言,转换为二进制,就能被电脑识别。但是这个一般是要通过一些软件来完成的,如c++编译器visual c++6.0,java编译器myeclipse
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lxl185
2012-03-15
知道答主
回答量:21
采纳率:0%
帮助的人:10.8万
展开全部
执行p+1就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aman04
2012-03-15 · TA获得超过3177个赞
知道小有建树答主
回答量:1342
采纳率:0%
帮助的人:823万
展开全部
顶楼上!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式