社区
C语言
帖子详情
问一个关于数组的问题
HashCodeWithJava
2004-07-08 06:50:43
我想问一下这些之间的在内存存放的区别:
1.
int a[10][10];
2.
int *a[10];
3.
int **a;
谢谢!
...全文
209
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永远存在,而且内容可以保留
这道题真的不清楚,乱说的原因是为了别人指正我,让我可以觉住它!永远记住!!
该项目为一位理论计算机科学博士研究生在读期间发表的多篇高质量学术论文的完整集合与详细记录_涵盖图论组合数学最优化算法布尔函数量子计算可逆电路设计布尔函数分析多项式表达模运算图论博弈.zip
该项目为一位理论计算机科学博士研究生在读期间发表的多篇高质量学术论文的完整集合与详细记录_涵盖图论组合数学最优化算法布尔函数量子计算可逆电路设计布尔函数分析多项式表达模运算图论博弈.zip
Linux 编程第
一个
小程序:进度条
这个是进度条样例程序
【无人机通信】无人机辅助双上行协调非正交多址自适应解码机制研究(Matlab代码实现)
【无人机通信】无人机辅助双上行协调非正交多址自适应解码机制研究(Matlab代码实现)内容概要:本文研究了无人机辅助的双上行协调非正交多址(NOMA)系统中的自适应解码机制,重点在于通过Matlab代码实现该通信系统的建模与仿真。研究探讨了在复杂无线环境中如何提升频谱效率和系统吞吐量,提出了一种自适应解码顺序调整方法,以应对信道状态变化和用户间干扰
问
题
。通过对无人机作为空中基站的部署优势进行分析,结合NOMA技术的特点,实现了上下行链路的高效协调通信,并验证了所提机制在不同场景下的性能增益。; 适合人群:具备通信工程、电子信息类专业背景,熟悉Matlab编程及无线通信系统仿真的研究生或科研人员;有一定NOMA和无人机通信基础的高年级本科生或工程师。; 使用场景及目标:①用于科研学习与论文复现,深入理解无人机辅助NOMA系统的架构与关键技术;②掌握自适应解码机制的设计思路与Matlab仿真方法;③为后续开展空地一体化网络、6G通信等相关课题提供技术参考与代码基础。; 阅读建议:建议读者结合文中Matlab代码逐步调试运行,理解每一步的信号处理流程,重点关注信道建模、功率分配、解码顺序决策等核心模块,同时可扩展至多用户场景进行性能对比分析。
基于Linux_MMAP技术的高性能本地缓存文件存储与搜索系统_支持超百万QPS的键值对数据快速读写与检索_适用于大规模数据缓存场景_如Web服务会话存储_分布式系统数据共享_实时.zip
基于Linux_MMAP技术的高性能本地缓存文件存储与搜索系统_支持超百万QPS的键值对数据快速读写与检索_适用于大规模数据缓存场景_如Web服务会话存储_分布式系统数据共享_实时.zip
Solidephile_HUSTCS-DataStructure_10900_1763633674825.zip
Solidephile_HUSTCS-DataStructure_10900_1763633674825.zip
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章