C中如何实现数组的传值引用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C中如何实现数组的传值引用相关的知识,希望对你有一定的参考价值。
楼主,麻烦你说清楚点行不……你指的传值是空数组,还是有数值的数组呢?一维数组
int[] arr;
arr = new int[5];
System.Console.WriteLine(arr[4]);
初始化
C# 数组元素可以在创建时使用
int[] arr2Lines;
arr2Lines = new int[5] ;
但 C# 初始值设定项的数目必须与数组大小完全匹配,也可以使用在同一行中声明并初始化 C# 数组:
int[] arr1Line = ;
此语法创建一个数组,其大小等于初始值设定项的数目。
在程序循环中初始化
在 C# 中初始化数组的另一个方法是使用 for 循环。下面的循环将数组的每个元素都设置为零:
int[] TaxRates = new int[5];
for (int i=0; i<TaxRates.Length; i++)
TaxRates[i] = 0;
交错数组
在下面的交错数组中,第一行有四项,而第二行有三项:
int[][] jaggedArray = new int[2][];
jaggedArray[0] = new int[4];
jaggedArray[1] = new int[3];
多维数组
使用以下语法声明多维矩形数组:
int[,] arr2D;
float[,,,] arr4D;
声明之后,可以按如下方式为数组分配内存:
arr2D = new int[5,4];
然后,可以使用以下语法访问数组的元素:
arr2D[4,3] = 906;
由于数组是从零开始的,因此此行将第四行第五列中的元素设置为 906。
初始化
可以使用以下一种方法,在同一个语句中创建、设置并初始化多维数组:
int[,] arr4 = new int [2,3] , ;
int[,] arr5 = new int [,] , ;
int[,] arr6 = , ;
以上引用别人的答案,自己删除了一些内容;
以下属于个人对数组的添加:
动态数组:
添加using System.Collections.ArrayList;
声明:
ArrayList a = new ArrayList();
赋值:a.Add(object value);//object value可以是任何类型数值
插入值:a.Insert(int index,object value);//int index在第几个索引插入值;object value可以是任何类型数值;
将动态数组转换为字符串数组:
string[] aa=new string[a.Count];
for(int i=0;i<a.Count;i++)
aa[i] = a[i].ToString();
参考技术A 最简便的方法就是使用指针,定义同类型的指针指向数组的起始位置,接下来使用*++或者*+n来操作
例如:
char arry【5】;
char *ch = &arry【0】;
for (int i = 0; i < 5; i++)
cout << ch++;
for (int i = 0; i < 5; i++)
cout << ch + i;
参考技术B 额外定义一个变量
例如 w=a[i];
a[i]=a[j];
a[j]=w;
可以实现a[i] 和a[j]的互换
C语言:二维数组 形参传值写法
int findWay(int map[][MAX], int startingRow, int startingCol, int numRows, int numCols, int directions[])
为什么 写成map[MAX][MAX]或者map[][MAX]就可以 而写成map[MAX][] 或者map[][]就不行?
例如下面这个:
int fun(int a[2][3],int n);
或者
int fun(int a[][3],int n);
要指出列数是多少,行数写不写都一样,行数要通过n进行传递。
假设
int b[2][3]=;
则调用的时候可以写:
fun(b,2); 参考技术A 编译器实际处理多维数组是把一维数组分段处理的,也就是说实际上并不存在多维数组,多维数组仅仅是个逻辑概念,所以行下标改变时,编译器必须知道有多少列,以计算偏移地址
如果是map[MAX][]的话,
假设目前坐标为map[i][x], 要移动到下一行相同列就是map[i+1][x],而参数没有提供列长度,编译器不知道这个+1到底要偏移多少个单位追问
那一维数组呢 比如 我在main 函数中已经知道map具体的长度 map[MAX]
那么 我在传值的时候 形参是 int findway(int map[]) 里面是这么写么?
一维数组根据元素类型就可以判断要偏移的长度,所以当函数的形参可以不提供长度
比如有int a[100]; 那么a[i+2]相对于 a[i] 的偏移量就是2个int的长度,所以函数形参可以用不带长度的数组或者直接就是个指针:
f(int a[]); f(int * i)
如果是三维数组必须确定第三位。 参考技术C 这个是C语言中多维数组的语法规定,详细介绍LZ可查看C语言的书。追问
数组 传地址 那么为什么map[][MAX] 可以找到地址 而map[MAX][] 找不到呢
追答系统是根据数据总个数和第二维的长度算出第一维的长度的。
以上是关于C中如何实现数组的传值引用的主要内容,如果未能解决你的问题,请参考以下文章