请教C++二维数组和指针的简单问题。

1.设有inta[3][2]={1,2,3,4,5,6},(*p)[2]=a1;则*(*(p+2)+1)的值是__1__。答案6问题:有人说,p是含有两个元素的一维数组,... 1.设有int a[3][2] ={1,2,3,4,5,6}, (*p)[2]=a1;则*(*(p+2)+1)的值是__1__。
答案6
问题:有人说,p是含有两个元素的一维数组,怎么是含有两个元素呢?
然后请解释一下(*p)[2]=a1,*(*(p+2)+1和求解过程
2,.
有二维字符数组char s[4][6]={"zhang","gao","tang","wang"},执行程序cout<<*s[2],屏幕上显示 ( )。
A gao B tang C g D t 答案B
问题:*s[2]是什么呢? 怎么求出来是s[0][2]的值呢??
本人是C++菜鸟,请您详细解释哈!
展开
 我来答
巴扎嘿v5
2013-05-18 · TA获得超过308个赞
知道小有建树答主
回答量:138
采纳率:0%
帮助的人:163万
展开全部

第一个题盲点实在是太多了。p的定义呢?a1又是什么?

第二题

主要是明白*s[2]这个是什么。其实有两个操作符,一个是解引用操作符*;另外一个是下标操作符[]。查一下优先级吧。应该先是下标操作所以*s[2]变成了*(s[2])。


那么s[2]是什么呢?其实由定义char s[4][6]可以明白。s中存放的是指向字符串的指针。s[2]是一个指针,指向一个字符串。由下标是2,指向的是"tang"这个字符串。对这个字符串解引用可得第一个字符t。答案是错误的,应该是D

int main(int argc, char *argv[])
{
              
    char s[4][6]={"zhang","gao","tang","wang"};
    cout<<*s[2]<<endl;
    cout<<s[2]<<endl;
    cout<<(*s)[2]<<endl;
    return 0;
}


kaixingui2012
2013-05-18 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6218万
展开全部
1.设有int a[3][2] ={1,2,3,4,5,6}, (*p)[2]=a1;则*(*(p+2)+1)的值是__1__。
答案6
问题:有人说,p是含有两个元素的一维数组,怎么是含有两个元素呢?
然后请解释一下(*p)[2]=a1,*(*(p+2)+1和求解过程
int a[3][2] ={1,2,3,4,5,6},严格表示应该为:
int a[3][2] ={
{1,2}, //a[0]
{3,4}, //a[1]
{5,6} //a[2]
}, 三组数,每组两个
int (*p)[2]=a1的正确写法为:int (*p)[2]=a[0] ; p是指针,其所指向的地址中的数据类型为“两个int”,即p指向的地址中的数据可以看成是 “一个含有两个元素的数组" 。这样描述,你应该可以看的懂。
p+0 ------->a[0]
p+1 ------->a[1]
p+2-------->a[2]
*(p+2) 指向a[2][0]的地址
*(p+2)+1指向a[2][1]的地址
*(*(p+2)+1)就是a[2][1]的值 = 6
2,.
有二维字符数组char s[4][6]={"zhang","gao","tang","wang"},执行程序cout<<*s[2],屏幕上显示 ( )。
A gao B tang C g D t 答案B
问题:*s[2]是什么呢? 怎么求出来是s[0][2]的值呢??
s[0]指向"zhang"
s[1]指向"gao"
s[2]指向"tang"
s[3]指向"wang"
*s[2]就是指s[2]的第一个数值 t,所以答案应该是D

首先要先搞明白指针是什么
然后要搞明白数组名是什么
再搞清楚数组与指针的关系
然后再去研究多维数组的概念
再去研究多维数组与指针的关系
最后再研究数组指针的概念
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
d30256
2013-05-18 · TA获得超过115个赞
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:114万
展开全部
1、(*p)[2]是个数组指针,p是个指针,指向一个2个元素的一维数组,关于数组指针你可以去百度一下,这里也不怎么说的清楚,*(*(p+2)+1就等价于p[2][1],也就是求a[2][1]

2、答案不是B,应该是D,*s[2]等价于s[2][0],也就等价于*(*(s+2)),同样等价于*(*s+12),如果输出为B,应该cout<<s[2],或者*(s+2),就是说cout一个地址或指针,才会输出整个字符串
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lijianwei034
2013-05-18
知道答主
回答量:8
采纳率:0%
帮助的人:3.3万
展开全部
第一个不完整吧。
2,你可以看一下二维数组的初始化,s[i](i=0,1,2,3)都是char*类型的指针。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式