社区
C语言
帖子详情
问一个关于数组的问题
HashCodeWithJava
2004-07-08 06:50:43
我想问一下这些之间的在内存存放的区别:
1.
int a[10][10];
2.
int *a[10];
3.
int **a;
谢谢!
...全文
186
14
打赏
收藏
问一个关于数组的问题
我想问一下这些之间的在内存存放的区别: 1. int a[10][10]; 2. int *a[10]; 3. int **a; 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
expert2000
2004-07-09
打赏
举报
回复
这是c/c++的一个难点 ,没有十次八次的练习是搞不懂的。
oldjackyone
2004-07-09
打赏
举报
回复
我想不到
sizeof(b) == 10 * sizeof(int *)
会有什么不正确的.....
^_^
nkwesley
2004-07-09
打赏
举报
回复
书上都有的
海阔天空的创业与创作
2004-07-08
打赏
举报
回复
peter9606(裴裴) ,请注意:你错了!
-------------------------
Leaveye(~枝)(完全了解系统,也要实际量测性能) 是对的!
1. int a[10][10];
sizeof(a) = 10 * 10 * sizeof(int)
2. int *a[10];
sizeof(a) = 10 * sizeof(int *)
3. int **a;
sizeof(a) = sizeof(int **)
-------------------------------
#include <iostream>
using namespace std;
void main(void)
{
int a[10][10];
if( sizeof(a) == 10 * 10 * sizeof(int) )
{
cout << "1\tOK!" << endl;
}
int *b[10];
if( sizeof(b) == 10 * sizeof(int *) )
{
cout << "2\tOK!" << endl;
}
int **c;
if( sizeof(c) == sizeof(int **) )
{
cout << "3\tOK!" << endl;
}
}
qybao
2004-07-08
打赏
举报
回复
最简单的就是
int a[3] = {1, 2, 3};
int b[4] = {1, 2, 3, 4};
int c[5] = {1, 2, 3, 4, 5};
//比较各种情况
int t1[3][3] = {{1,2,3}, {4,5,6}}; //这个数组是固定不变的
int *t2[2];
t2[0] = a;
t2[1] = b; //数组是不规则的,但数组只能是2行,列可变
int **t3;
t3 = new int*[3]; //数组行可变
t3[0] = new int[3];//列也可变
t3[1] = new int[4];
t3[2] = new int[5];
delete [] t3[0];
delete [] t3[1];
delete [] t3[2];
delete [] t3;
riitso
2004-07-08
打赏
举报
回复
int *a[10];
sizeof(a) = 10 * sizeof(int *)
对的
oldjackyone
2004-07-08
打赏
举报
回复
1.
int a[10][10] : 类似于表格的数组,表格里有行和列。
2.
int *a[10] : 指针数组,在a里面存贮10个指向int型变量的地址。
3.
int **a :指针的指针,跟 1 里面是有区别的: 这里 a 是一个指针,而 1 里 a 是一个二维数组,虽然在有些时候一样的用,但意义是不同的。
具体可看小弟分析的一个CSDN上网友提的问:
http://www.cnblogs.com/oldjacky/archive/2004/06/23.aspx
qybao
2004-07-08
打赏
举报
回复
2 int *a[10]; 指针数组,即每个数组元素的指向是可以改变的
举个例子
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
int *b[3];
b[0] = a[2]; //把a[2]的地址赋给b[0],即b[0]与a[2]指向相同的地址,也就是a[2][0]开始的地址
cout << "b[0][0] = " << b[0][0] << endl;
int d[3] = {1, 2, 3};
b[1] = d; //b[1]与d指向相同的地址,也就是b[0]开始的地址
cout << "b[1][0] = " << b[1][0] << endl;
3 int **a; 指向指针的指针,用法上与2差不多,但是这里a可以改变,而2里a是不能改变的,而且还可动态申请内存,变为不规则数组
举例
int t[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
int *a[3] = {t[0], t[1], t[2]};
int *b[3] = {t[2], t[0], t[1]};
int **c;
c = a;
cout << "c = " << c << endl;
*c = a[1];
cout << "*c = " << *c << endl;
cout << "**c = " << **c << endl;
*c = b[1];
cout << "*c = " << *c << endl;
cout << "**c = " << **c << endl;
c = new int*[2];
c[0] = new int[2];
c[1] = new int[3];
c[0][0] = 1;
c[0][1] = 2;
c[1][0] = 4;
c[1][1] = 5;
c[1][2] = 6;
cout << "(*c)[1] = " << (*c)[1] << endl;
cout << "(*(c+1))[2] = " << (*(c+1))[2] << endl;
delete [] *c;
delete [] c;
robin97
2004-07-08
打赏
举报
回复
蹭分
peter9606
2004-07-08
打赏
举报
回复
int *a[10];
sizeof(a) = 10 * sizeof(int *)
错!
Leaveye
2004-07-08
打赏
举报
回复
这样说或许比较容易理解吧,也顺便检验一下自己的理解:
1. int a[10][10];
sizeof(a) = 10 * 10 * sizeof(int)
2. int *a[10];
sizeof(a) = 10 * sizeof(int *)
3. int **a;
sizeof(a) = sizeof(int **)
而各种指针(type *)的占用空间是相同的(原因是都只是存放地址)。
欢迎大侠指正补充
Dong
2004-07-08
打赏
举报
回复
楼上正确,谢谢你的提醒。
flyskydotnet
2004-07-08
打赏
举报
回复
int *a[10]应该是十个指针,a[0],a[1]....a[9]这十个都是指向int类型的指针
是一个指针数组
Dong
2004-07-08
打赏
举报
回复
int a[10][10];一个int类型的二维数组。存放在栈中,堆栈回收而被摧毁,
int *a[10];一个指向十个元素的int类型指针。a永远存在,但a的内容是不能保留的。
int **a;一个int类型指针的指针。a永远存在,而且内容可以保留
这道题真的不清楚,乱说的原因是为了别人指正我,让我可以觉住它!永远记住!!
秒杀系统八
问
本课程从浅到深、结合实际的工作经验...本课程不仅教你如何去设计
一个
秒杀系统,同时也会锻炼
问
题
分析、架构设计、性能优化等能力;自己可以举一反三的去设计其他面临高并发、高可用挑战的系统。
JVM性能调优面试必
问
OOM和CPU100%和死锁排查实战原理分析
本节课通过两个方面系统性的给大家分享JVM的生产
问
题
排查实战。 第一章节,介绍OOM异常的原因,分析方法论,实战OOM讲解,工具分析dump文件,确定
问
题
点,解决
问
题
等分析OOM
问
题
排查实战。 第二章节,介绍CPU100%...
Visual Studio 2019 调试入门视频教程
讲个故事,有同学
问
我,老师,为什么我的贪吃蛇不能移动了,吃完食物就一直向前走,不管怎么按都按不了。 我回答道,这个
问
题
我能解决,但是解决后,你的调试水平还是没有提高。跟着这门课程学一遍,你就会调试了。 ...
互联网大厂技术面试内幕
互联网大厂一般喜欢怎么
问
问
题
呢?面试总是会遇到一些很难回答的
问
题
,比如你为何离职?诸如此类的
问
题
处理不好,即使技术环节答的很好也有可能翻船。其他例如怎么谈出理想的薪资,面试等通知阶段该注意什么。
使用SpringBoot打造企业开发框架
我们不禁要
问
,这么
一个
优秀的框架,是不是在企业开发中就已经足够了,如果是,那么为什么像BAT这些大公司还要研发自己的交易框架,当然这里面除了核心技术之外,还有两个比较重要的原因: 第一:像Spring ,Spring...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章