有关二维数组的调用问题?

问题描述

有关二维数组的调用问题?

#include
int main()
{
int i=0;
int a[3][5]={1,3,5,6,7,8,9,3,2,9,9,0,1};
for(i=0;i<15;i++)
{
printf("%d",a[0][i]);//为什么通过a[0][i]可调用这个二维数组的所有元素?
}
a[10][10]=8;//可以越界修改,而且vs无法识别
printf("%d
",a[10][10]);
return 0;
}
这个应该怎么理解?

解决方案

二维数组其实是语法糖,只是简单地将第二维下标乘以长度+第一维下标,所以也可以用二维数组访问一维数组,或者反过来,其实是一回事。
甚至,你还能写出这么目瞪口呆的东西:
int a[] = {1,2,3,4};
cout << 1[a];
如果你理解编译器只是简单替换,就不觉得奇怪了。
另外C语言也不会检查数组是否越界。总之,C语言有很多原始而古怪的地方。

解决方案二:

一维数组的申请和调用都很简单,int *a=new int[10],调用时直接print(a)。但是二维数组就不太一样了。
一、二维数组调用:
之前总以为可以这样写void Fun(int a[][],int m,int n),今天上机调试一下发现有问题,原来C++中二维数组不能直接当参数,有2种办法:
1.获取参数时,表明数组的列;
void print(int p[][4],int r......
答案就在这里:二维数组调用和申请问题

解决方案三:

int a[3][5]={1,3,5,6,7,8,9,3,2,9,9,0,1}; 你这个{1,3,5,6,7,8,9,3,2,9,9,0,1}只赋值 a[0][n]

解决方案四:

给a[0][9]=10;赋值
printf("%d
",a[1][4]);
就直接改变了a[1][4]的值,也就相当于给a[1][4]赋了个值

解决方案五:

a[0][I]应该不会在你那个循环里输出所以值吧!这样是比较合理的: 利用指针间接访问,*(*a)++, 循环次数是15次。

时间: 2024-11-01 06:45:33

有关二维数组的调用问题?的相关文章

java matlab 二维数组-java调用matlab中调用二维数组问题

问题描述 java调用matlab中调用二维数组问题 我是用的以下matlab函数 function [Theta, Phi, R] = infofusion(a1, b1, a1, b2, a3, b3): 其中a1,b1,a2,b2,a3,b3都是4*3的二维数组,并且每个数组里面都是常量,都是数,请问各位大神,如何在java调用matlab的基础上实现二维数组的调用,跪求了

二维数组融合方法调用的实例

问题描述 二维数组融合方法调用的实例 我是新手,想看一下,数组中,加入了方法的调用,怎么实现数组能随机生成数 解决方案 不知道你问的什么语言,但是这种简单的问题,自己google下得到答案比问问题更快.各种语言都有随机数生成的函数.

调用函数-怎样将二维数组作为函数返回值并在主函数中调用

问题描述 怎样将二维数组作为函数返回值并在主函数中调用 我的调用函数是这样的:float(*TIME(float f_1[3][100]))[100]{ for(i=0;i<=2;i++) { L_1[i][0]=-(a_1*f_1[i][0-3+100]+a_2*f_1[i][0-2+100]+a_3*f_1[i][0-1+100]+a_4*f_1[i][0]+a_5*f_1[i][0+1]+a_6*f_1[i][0+2]); L_1[i][1]=-(a_1*f_1[i][1-3+100]+a

返回二维数组 语言-关于调用函数返回二维数组的问题

问题描述 关于调用函数返回二维数组的问题 我想调用一个函数,返回二维数组,但是一直不对,写了一个简单的程序,还请各位大神给看一下, #include #include float*q[3];int i,j; int main() { float f[3][2],A[3][2]; float*(TIME(float E[3][2])); for(i=0;i<=2;i++) { for(j=0;j<=1;j++) {f[i][j]=j+i;printf("%fn",f[i][j

二维数组作形参该如何实现

问题描述 二维数组作形参该如何实现 假设有个函数A,在这个函数里定义了一个二维数组.再定义一个函数B,并在函数A里调用 函数B,通过B对这个二维数组进行处理(二维数组作形参),然后将结果返回到函数A.要求这个二维数组的长度 由函数A里的变量参数决定.请问诸位高手该如何实现? 解决方案 二维数组作为形参二维数组形参二维数组形参问题 解决方案二: 定义函数B时增加两个维数的参数.

PHP二维数组去重的方法(保留各个键值的同时去除重复的项)-- 二维数组的唯一性

对于如下二维数组,要求对其进行去重: $arr = array( '0'=>array( 'name'=>'james', 'age'=>30, ), '1'=>array( 'name'=>'susu', 'age'=>26, ), '2'=>array( 'name'=>'james', 'age'=>30, ), 'new'=>array( 'name'=>'kube', 'age'=>37, ), 'list'=>arr

C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表本文由 arthinking 发表于315 天前 ⁄ itzhai.com原创文章 ⁄ C语言 ⁄ 评论数 3 ⁄ 被围观 1,775 views+   指针数组: 在一个数组中,如果它的元素全部都是指针

JavaScript二维数组实现的省市联动菜单_javascript技巧

复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> //初始化一个二维数组存储城市列表项 var cities=[ ["安庆","合肥",&

二维数组-关于C语言的指针数组的问题

问题描述 关于C语言的指针数组的问题 老师说过 传递一个二维数组时 必须指定 第二维的 个数 才能正确索引 数组1维+1的位置 函数参数传递 都是写成这样 abc(int* array[10]) 但是看到main函数的 参数确是 int main(int argc, char* argv[], char* env[]) 这样写 能索引argv+1 的位置吗? 解决方案 当然可以,C语言是一种简陋和原始的语言,它简陋的程度对于用惯了高级编程语言的人来说匪夷所思,比如你完全可以越界访问数组,至于结果