| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3557 人关注过本帖
标题:二维数组元素如何用指针表示
取消只看楼主 加入收藏
xingshujun
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-1-17
收藏
 问题点数:0 回复次数:1 
二维数组元素如何用指针表示

程序一:
#include <iostream>
using namespace std;
int main()
{
int a [8]={212,456, 32, 16,};
cout<<a[0]<<endl;
int *b;
b=a;
cout<<b<<endl;
return 0;
}
输出结果:212
0012FF60
程序二:
#include <iostream>
using namespace std;
int main()
{
int a [3][8]={212,456, 32, 16,};
cout<<a[0][0]<<endl;

cout<<a<<endl;
return 0;
}
输出结果为:
212
0012FF60,说明程序2中的a是一内存地址可赋值给一指针
但下面的程序为什么会出错呢

#include <iostream>
using namespace std;
int main()
{
int a [3][8]={212,456, 32, 16,};
cout<<a[0][0]<<endl;
int *b;
b=a;
cout<<b<<endl;
return 0;
}
错误提示为:
error C2440: '=' : cannot convert from 'int [3][8]' to 'int *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.



程序四:
#include <iostream>
using namespace std;
int main()
{
int a [3][8]={212,456, 32, 16,};
cout<<a[0][0]<<endl;
int *b;
b=a[0];
cout<<b<<endl;
return 0;
}
输出结果:
212
0012FF20

为什么在把b=a改为b=a[0]就有结果输出,而b的值又是谁的内存地址呢;



我想知道二维数组元素如何用指针表示;哪位高手帮一帮我这个初学者.

搜索更多相关主题的帖子: 指针 元素 
2006-01-21 18:46
xingshujun
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-1-17
收藏
得分:0 

经love_me的提示我有点明白了,以下面的例子说明吧

#include <iostream>
using namespace std;
int main()
{
int t[3][4]=
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};

int *b;
b=t[0];
cout<<*b;


return 0;
}
输出结果为"1";

t[0]为元素"1"的地址
t[1]为元素"5"的地址
t[2]为元素"9"的地址

若指针要指向元素"3",则b=b[0]+2;
若指针要指向元素"11",则b=t[2]+2;


至于那个编译器错误,我没有看懂,因为我还没有学到结构和类,不过我会努力往下学,弄清错误的原因

谢谢love_me

[此贴子已经被作者于2006-1-21 21:16:23编辑过]


因为喜欢一个人,走上一条不归路.热情需要燃烧.
2006-01-21 21:15
快速回复:二维数组元素如何用指针表示
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012480 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved