c – 在函数声明中,传递固定大小数组的意义是什么?

前端之家收集整理的这篇文章主要介绍了c – 在函数声明中,传递固定大小数组的意义是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这感觉就像一个非常愚蠢的事情要问,但是我有一个采取编程课的人问我一些任务的帮助,我在代码中看到这一点(没有关于匈牙利语符号的评论):
void read_dictionary( string ar_dictionary[25],int & dictionary_size ) {...

其中,主要是一个C#程序员(我在大学学习C和C),我甚至不知道你可以做什么.我总是被告知,并且已经读过,因为你应该拥有

void read_dictionary( string ar_dictionary[],int ar_dictionary_size,int & dictionary_size ) {...

我被告知,教授给他们这个,它的工作原理,那么什么声明一个这样的固定大小的数组呢? C没有本机的方式知道传递给它的数组的大小(即使我认为这可能已经在最新的规范中被更改)

解决方法

在一维数组中它没有意义,被编译器忽略.在两个或更多个维数组中它可以是有用的,并且被函数用作确定矩阵(或多维数组)的行长度的方式.例如 :
int 2dArr(int arr[][10]){
   return arr[1][2];
}

函数将根据指定的长度知道arr [1] [2]的地址,并且编译器也不应该接受该函数的不同大小的数组 –

int arr[30][30];
2dArr(arr);

是不允许的,并且将是编译器错误(g):

error: cannot convert int (*)[30] to int (*)[10]

猜你在找的C&C++相关文章