问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言二维数组

发布网友 发布时间:2022-04-23 02:13

我来回答

5个回答

热心网友 时间:2023-10-11 01:11

这个就是指针数组和数组指针的区别了,我当年也在这里转了很久,希望我下面所说得可以帮到你。
首先,明确编译器是怎么识别*s[]和(*s)[]两种形式的代码的。对于*s[],编译器会以默认的右结合的方式进行识别,所以首先识别s[],这是一个数组,然后再识别*,说明这个数组的元素都是指针。所以最后的结果就是:这是一个“以指针为元素的数组”,简称指针数组。而对于(*s)[],由于()的优先级高于*,所以编译器会先识别()里面的,也就是先识别*s,所以它是一个指针,然后()说明这个指针指向的是一个数组,所以最后的结果是:这是一个“指向数组的指针”,简称数组指针。
好吧,我承认一点,就是这两个东西看起来复杂,但是其实用起来区别不大,最本质的东西就是,指针数组用到多个指针,数组指针就完全是一个指针跑天下。
看下面一段代码(我偷懒用C++写的,反正这个不是重点):
#include
using
namespace
std;
int
main()
{
//指针数组
*a[2]
int
t1[3]
=
{0,1,2};
int
t2[3]
=
{3,4,5};
int
t3[3]
=
{6,7,8};
int
*a[3];
a[0]
=
t1;
//一个指针赋值
a[1]
=
t2;
//第二个指针赋值
a[2]
=
t3;
//第三个指针赋值
//数组指针
(*b)[3]
int
(*b)[3]
=
new
int[3][3];
for(int
i=0;i<3;i++)
for(int
j=0;j<3;j++)
*(*(b+i)+j)
=
i*3+j;
//一个指针跑天下
cout
<<
*((*b)+1)
<<
"
"
<<
*(*(b+1))
<<
endl;
system("pause");
return
0;
}
最后我想说,其实这个做题的时候有用,自己写的时候还是尽量直接用int[n][m]的方式比较方便,稍微浪费点空间问题不大,重要的是看起来好看,不容易出错。

热心网友 时间:2023-10-11 01:11

int a[m][n];//就表示一个m行n列的整型二维数组

在c语言中数组的下标是从0开始的所以,数组a的元素个数可以表示为:a[0][0]-a[m-1][n-1]

例如:

#include<stdio.h>
int main()
{
int a[3][2],i,j;//定义一个3行2列的整型二维数组a 

for(i=0;i<3;i++)//依次给二维数组赋值 
for(j=0;j<2;j++)
scanf("%d",&a[i][j]);
printf("\n");
for(i=0;i<3;i++){//输出二维数组 
for(j=0;j<2;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
 }
 /*
 运行结果:
1 2
3 4
4 5

1 2
3 4
4 5 
 */

热心网友 时间:2023-10-11 01:11

例如对整型二维数组a[3][2]赋值方法一:在定义的同时赋值 int a[3][2]={0};//所有数组元素均为0 方法二: int a[3][2]={1,2,3,4,5,6};//常规的赋值方法方法三: int a[3][2]={{1,2},{3,4},{5,6}};//分行的赋值方法方法四: int a[3][2]={{1,2},{0},{3}};//部分赋值方法,第一行元素的值分别为1,2,第二行元素值都是0,第三行第一个元素值为3,第二个元素值为0 方法五: int a[3][2];/先定义 for(i=0;i<=3;i++) //用双重for循环赋值,i,j表示二维数组下标 for(j=0;j<=2;j++) scanf("%d",&a[i][j]); 希望对你有所帮助。追问你说的我能看懂但是我不是很明白为啥不可以我那样写,一维数组里面的元素也是数组这样写错在哪里?

热心网友 时间:2023-10-11 01:12

定义的时候int a[3][2]代表三行两列的整型数组
使用的时候是循环不到a[3][2]的,三行两列的整型数组最多可以访问到a[2][1],因为数组下标是从0开始的,切记不要越界哦~

热心网友 时间:2023-10-11 01:13

楼主,C语言定义数组后要再像你这样赋值只能逐个赋值或者采用循环的方法了。
C语言就是这样。因为定义完数组后,第一a[3][4]并不代表一个数组,第二数组中没有这个元素。(越界)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 明日之后建筑护甲删除后怎么找回 c语言二维数组输入 我删了明日之后然后又重新下回来,我以前那个手机号不见了,邮箱账号也忘了,怎么才能找回来? C语言中怎么实现输入二维数组数据,输出一个3*4矩阵,将数据为负数的元素所在的位置和元素值输出_百度问一问 把明日之后卸载了又重新下载了,但又要重新玩,怎样重新找回帐号? c语言 二维数组如何输入 该怎么输入数组,才能输出? 安卓明日之后误删怎么办 c语言中 二维数组要怎么输入?怎么换行啊? 明日之后雷托典藏删了多长时间找回 急急!!!如何用c语言输入和输出一个二维数组?? 明日之后装备误删如何找回? 《明日之后》怎么找回以前的账号? 淘宝网上的支付宝银行卡怎样解除 在淘宝网的银行卡怎样解绑支付宝 淘宝买东西银行卡绑定支付宝之后卡解绑了 钱是退到哪里? 天猫绑定银行卡以后怎么解除? 天猫商户如何修改绑定支付宝及银行账户? 为何淘宝网显示有银行卡绑定,支付宝不显示,怎么解绑? 为什么支付宝绑定银行卡已经解除绑定,在淘宝,天猫支付时 ,还是显示原来的银行卡支付?_百度问一问 在天猫绑定了银行卡,怎样解绑? 如何使用C语言在动态数组中手动输入一个二维数组的值 明日之后买的蓝图不小心误删了怎么办? c语言输入一个二维数组,找出每行的最大值输出 明日之后不小心删了数剧该怎么恢复 C语言中二维数组的输入 明日之后装备分解了怎么找回 怎样登录明日之后可以删除游戏后,再下载以前的存档还在呢 C语言输入一个二维数组,找出这个二维数组的最大值 ETF 50ETF各指什么? 明日之后说过退休一年被官方删除账号那么还能找回吗? C语言二维数组的输入 科技etf哪个最好 明日之后房子被删了怎么办 C语言二维数组用循环如何输入数据~~急啊~!谢谢~! 明日之后邮箱里的东西放60天消失了怎么找回? C语言中的二维数组的赋值,输入输出怎么用 如何查询蓝筹ETF成分股? C语言从键盘上输入一个二维数组再输出!!谢谢 C语言输入一个二维数组。为什么报错 脾胃调理应该怎么做比较有效呢?