如何巧妙地运用C语言数组实现优雅编程?

2026-05-29 09:453阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1024个文字,预计阅读时间需要5分钟。

如何巧妙地运用C语言数组实现优雅编程?

C/C++中,如果一个函数接收一个数组作为参数,那么该数组将被退化为指针。以下是对给定代码的简化:

cpp// 数组arr的大小未知。int arrSize(int *arr) { cout << element num : <

C/C++中如果一个函数接受一个数组作为参数,那么数组将会被退化为指针,如果定义如下代码:

//数组arr的大小未知。
int arrsize(int arr*) {
cout << "element num : " << sizeof(arr) / sizeof(arr[0]) << endl; //1
}

在上面那段代码中不仅得到的数组大小是不正确的,还会出现让调用则不明白是传递int变量的地址,还是传递一个指针(数组),为了解决第二个歧义现象,我们可以定义如下:

//数组arr的大小依旧未知。
int arrsize(int arr[]) {
cout << "element num : " << sizeof(arr) / sizeof(arr[0]) << endl; //1
}

即使我们按上面那种定义,但数组的的大小我们依旧不知道,但现在编译器还会提示类似如下警告:

on array function parameter ‘arr’ will return size of ‘int*’ [-Wsizeof-array-argument]

为了更好的解决上面的问题我们可以考虑使用一个引用形参,可以有如下代码:

//数组arr的大小必须是12,否则会报错。
阅读全文

本文共计1024个文字,预计阅读时间需要5分钟。

如何巧妙地运用C语言数组实现优雅编程?

C/C++中,如果一个函数接收一个数组作为参数,那么该数组将被退化为指针。以下是对给定代码的简化:

cpp// 数组arr的大小未知。int arrSize(int *arr) { cout << element num : <

C/C++中如果一个函数接受一个数组作为参数,那么数组将会被退化为指针,如果定义如下代码:

//数组arr的大小未知。
int arrsize(int arr*) {
cout << "element num : " << sizeof(arr) / sizeof(arr[0]) << endl; //1
}

在上面那段代码中不仅得到的数组大小是不正确的,还会出现让调用则不明白是传递int变量的地址,还是传递一个指针(数组),为了解决第二个歧义现象,我们可以定义如下:

//数组arr的大小依旧未知。
int arrsize(int arr[]) {
cout << "element num : " << sizeof(arr) / sizeof(arr[0]) << endl; //1
}

即使我们按上面那种定义,但数组的的大小我们依旧不知道,但现在编译器还会提示类似如下警告:

on array function parameter ‘arr’ will return size of ‘int*’ [-Wsizeof-array-argument]

为了更好的解决上面的问题我们可以考虑使用一个引用形参,可以有如下代码:

//数组arr的大小必须是12,否则会报错。
阅读全文