社区
C语言
帖子详情
问一个关于数组的问题
HashCodeWithJava
2004-07-08 06:50:43
我想问一下这些之间的在内存存放的区别:
1.
int a[10][10];
2.
int *a[10];
3.
int **a;
谢谢!
...全文
219
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永远存在,而且内容可以保留
这道题真的不清楚,乱说的原因是为了别人指正我,让我可以觉住它!永远记住!!
int java 声明_怎样用java定义
一个
int
数组
C++ 怎么声明
一个
整型
数组
?
导航:网站首页 >怎样用java定义
一个
int
数组
C++ 怎么声明
一个
整型
数组
?怎样用java定义
一个
int
数组
C++ 怎么声明
一个
整型
数组
?相关
问
题
:匿名网友:int[] anArray = null;这样赋值在java中是不允许的,会判定为语法错误,首先java只可以在class中声明成员变量,而不能对变量赋值,你只能在方法中(例如:main方法或者其他方法)对变量赋值。但是cl...
指针
数组
与
数组
指针详解
指针
数组
与
数组
指针详解1.什么是指针
数组
和
数组
指针? 指针
数组
:指针
数组
可以说成是”指针的
数组
”,首先这个变量是
一个
数组
,其次,”指针”修饰这个
数组
,意思是说这个
数组
的所有元素都是指针类型,在32位系统中,指针占四个字节。
数组
指针:
数组
指针可以说成是”
数组
的指针”,首先这个变量是
一个
指针,其次,”
数组
”修饰这个指针,意思是说这个指针存放着
一个
数组
的首地址,或者说这个指针指向
一个
数组
的首地址。 根
c定义
一个
整型
数组
_C语言指针和
数组
一维
数组
数组
名int a; int b[10]在c中,在几乎所有使用
数组
名的表达式中,
数组
名的值是
一个
指针常量,也就是
数组
第1个元素的地址(要注意
数组
名在这里指的是
一个
地址)。它的类型取决于
数组
元素的类型:如果它们是int类型, 那么
数组
名的类型就是“指向int的常量指针”;如果它们是其他类型,那么
数组
名的类型就是“指 向其他类型的常量指针”。同时,还要注意这并不代表
数组
就等同于指针,
数组
有不同的...
java如何把
一个
数组
按照一定数量分成多个
数组
Java如何把
一个
数组
按照一定数量分成多个
数组
在编程中,我们经常会遇到需要将
一个
数组
按照一定数量分成多个
数组
的情况。例如,将
一个
包含1000个元素的
数组
分成10个
数组
,每个
数组
包含100个元素。在Java中,我们可以通过多种方式来实现这一功能。本文将详细介绍如何使用Java来完成这一任务,并提供详细的代码示例。 1.
问
...
多维
数组
变成一维
数组
这个
问
题
来源于
一个
朋友曾经
问
过我的
问
题
,当时是
一个
二维
数组
变成一维
数组
。后面我想整理一下,整理
一个
多维,并且是不定维的
数组
。 一、二维
数组
变成一维
数组
1、遍历
数组
,将元素
一个
个放入新
数组
结果: 如果元素不是
数组
,将会报错。下面是改良版: 这样的方法仍显臃肿 2、用apply的特性,将
数组
作为参数展开 concat接受单个值作为参数,所以不需要识别。 3、利用es6新...
C语言
70,037
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章