dev c++,二维数组的第一维赋值出错?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dev c++,二维数组的第一维赋值出错?相关的知识,希望对你有一定的参考价值。

代码如下,
在dev c++中输入如下代码,应该可以输入7个数赋值。但是如果第一个数输入1,第二个数输入6,i的值就会马上变成6,然后退出;
如果把定义的第一维改大点,变成 a[2][6],就不再出问题
在vs c++中也没事。
这是为啥?

#include<iostream>
using namespace std;
int main()

int a[1][6];
int i;
for(i=0;i<=6;i++)
cin>>a[1][i];

return 0;

因为数组下标从0开始,a[1][6] 的第一维是 a[0][i] 而没有 a[1][i],至于输入 6 退出可能是正好 i 的地址处在 a[1][0] 的位置,导致 i 的值被暗中修改了。 参考技术A 列索引最多到5,所以越界了 参考技术B 把for(i=0;i<=6;i++)的<= 改成<就行了

数组集合

1.什么是数组: 数组就是这样的一个容器,用于存储长度固定的,类型相同的变量的

2.数组特点:长度固定,类型相同 

3.数组的分类  : 一维数组,多维数组,不规则数组

4.数组的应用 : 创建,赋值, 应用

5.C# 支持多维数组。多维数组又称为矩形数组:多维数组最简单的形式是二维数组。一个二维数组,在本质上,是一个一维数组的列表。多维数组可以通过在括号内为每行指定值来进行初始化。

 //数组的第一种定义方式
            string[] values =  "123", "22", "2123", "333" ;

            //数组的第二种定义方式
            int[] nums = new int[3];
            //数组赋值
            for (int i = 0; i < nums.Length; i++)
            
                nums[i] = i;
            
 //二维数组定义
            int[,] intArry = new int[3, 3]   2, 3, 3 ,  3, 4, 5,  5, 6, 7  ;
            //intArry = new int[2,3] ;
            int nums1 = intArry.GetLength(1);

            Console.WriteLine(nums1);
            for (int i = 0; i < intArry.Length; i++)
            
                Console.WriteLine("222");
            
            for (int i = 0; i < intArry.GetLength(0); i++)
            
                for (int j = 0; j < intArry.GetLength(1); j++)
                
                    Console.Write(intArry[i, j] + "  ");
                
                Console.WriteLine();
            
//三维数组           
 int[,,] numsss = new int[2, 3, 4] 
                
                     1, 2, 3, 4 ,
                     5, 6, 7, 8 ,
                     9, 10, 11, 12 
                ,
                
                     13, 14, 15, 16 ,
                     17, 18, 19, 20 ,
                     21, 22, 23, 24 
                
            ;
            int[,,,] numssss = new int[2, 3, 4, 5] 
                
                    
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 
                    ,
                    
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 
                    ,
                    
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 
                    
                , 
                     
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 
                    ,
                    
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 
                    ,
                    
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 ,
                         1, 2, 3, 4, 5 
                    
                
            ;
            Console.WriteLine(numssss.Length);
            for (int i = 0; i < numssss.Length; i++)
            
                int j = numssss[0, 0, 0, 0];
            

6.交错数组是数组的数组。您可以声明一个带有 int 值的交错数组 scores

int[][] scores = new int[5][]; 
for (int i = 0; i < scores.Length; i++) 
 
    scores[i] = new int[i+2]; 
 

7.Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义。
8.Array 类提供了各种用于数组的属性和方法。
9.C# 传递数组给函数:在 C# 中,您可以传递数组作为函数的参数。您可以通过指定不带索引的数组名称来给函数传递一个指向数组的指针。

10.C# 参数数组:params 关键字,public 返回类型 方法名称( params 类型名称[] 数组名称 )

//参数数组
            MyClass myClass = new MyClass();
            myClass.Print();
            myClass.Print("易先鹏");
            myClass.Print("鲁长秋", "王剑飞");
            myClass.Print("陈启跃", "张晨熹", "王晓静");
            string[] names = new string[3]  "陈启跃", "张晨熹", "王晓静" ;
            myClass.Print(names);

11.集合:用于存储类型不固定,长度可动态添加元素的;
12.1、BCL(Base Class Library)中集合类型分为泛型集合与非泛型集合。
     2、非泛型集合的类和接口位于System.Collections命名空间。
     3、泛型集合的类和接口位于System.Collections.Generic命名空间。

13:System.Collection 命名空间的类
     (1)动态数组(ArrayList):动态数组(ArrayList)    它代表了可被单独索引的对象的有序集合。它基本上可以替代一个数组。但是,与数组不同的是,您可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序各项。
     (2)哈希表(Hashtable):它使用键来访问集合中的元素。当您使用键访问元素时,则使用哈希表,而且您可以识别一个有用的键值。哈希表中的每一项都有一个键/值对。键用于访问集合中的项目。
     (3) 排序列表(SortedList):用于处理和表现类似key value的键值对,它可以使用键和索引来访问列表中的项。排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(Hashtable)。集合中的各项总是按键值排序。
     (4)堆栈(Stack):它代表了一个后进先出的对象集合。当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素。
     (5)队列(Queue):它代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。 

//队列
            Queue queue = new Queue();
            queue.Enqueue("易先鹏");   //入列
            queue.Enqueue("王剑飞");   //入列
            queue.Enqueue("鲁长秋");   //入列
            queue.Enqueue("王金鑫");   //入列
            Console.WriteLine(queue.Count);
            int length1 = queue.Count;
            for (int i = 0; i < length1; i++)
            
                string names = queue.Dequeue().ToString(); //出列
                Console.WriteLine(names);
            
            Console.WriteLine("队列所剩人数:"+ queue.Count);

 

  

     (6)点阵列(BitArray):用来处理位集合,类管理一个紧凑型的位值数组,它使用布尔值来表示,其中 true 表示位是开启的(1),false 表示位是关闭的(0)。当您需要存储位,但是事先不知道位数时,则使用点阵列。


14.堆(heap):堆是一种经过排序的树形数据结构,每个结点都有一个值。
15.栈(stack):它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。(PS:颇有砌墙的砖——后来者居上的感觉。)

//堆栈
            Stack stack = new Stack();
            stack.Push("易先鹏");
            stack.Push("王剑飞");
            stack.Push("鲁长秋");
            Console.WriteLine(stack.Count);
            //取堆栈的元素
            string name1 = stack.Peek().ToString();
            Console.WriteLine(name1);
            int length = stack.Count;
            for (int i = 0; i < length; i++)
            
                string names = stack.Pop().ToString();
                Console.WriteLine(names);
            
            Console.WriteLine(stack.Count);

 








 



 




 

 



 



 

以上是关于dev c++,二维数组的第一维赋值出错?的主要内容,如果未能解决你的问题,请参考以下文章

C++二维数组给一维数组赋值

c语言中怎样实现对二维数组元素进行赋值并输出。

C中结构体内有一个成员是二维数组,可以直接赋值另一个一维数组吗?

C语言中怎么把一维数组赋给另外一个一维数组

如何将二维数组的一维分配给一个指针。

android 能不能在array文件里定义二维数组而不单单是一维数组