C++学习笔记-数组引用
来源:互联网 发布:java随机生成5个字母 编辑:程序博客网 时间:2024/06/05 16:38
1、数组将阶
#include <iostream>using namespace std;void test( char arr[100] ){cout << sizeof(arr) <<endl ; // 输出 4}int main(){char arr[100] = { 0 };cout << sizeof(arr) <<endl; // 输出 100 test( arr );return 0 ;
对于同样的arr,一个输出100,另一个输出4。是因为void test( char arr[100] )中的arr被降阶了。
void test( char arr[100] ) 等同于void test( char arr[] ),
也等同于void test( char* const arr )
它甚至等同于void test( char arr[10] )
编译器对数组的维数不作检查。 也就是说 void test( char arr[100] ) { cout << sizeof(arr) << endl; }
被降成 void test( char* const arr ) { cout << sizeof(arr) <<endl; // 既然是char*,当然输出4 }
这样,即然不检查数组的大小,对于需要保证数组大小的程序就会带来问题。如何解决这个问题呢?可以用c++中的对数组的引用。
#include <iostream>using namespace std;void test( char arr[100] ){cout << sizeof(arr) <<endl ; // 输出 4}void test1( const char (&arr)[100] )//这样test1就能接受100个char的数组,且只能接受大小为100的char数组{cout << sizeof(arr) <<endl ; // 输出 100}int main(){char arr[100] = { 0 };cout << sizeof(arr) <<endl; // 输出 100 test( arr );test1(arr);/*char arr[20] = {0};test1( arr ) ;*///会出错!!!return 0 ;}
0 0
- C/C++程序设计学习笔记三:通过指针引用数组
- C++学习笔记-数组引用
- C/C++中关于地址、指针和引用变量的学习笔记(二) : 数组
- C语言学习笔记<数组>
- C语言学习笔记:数组
- C++primer学习笔记--右值引用
- C/C学习笔记/指针与数组
- 数组引用(C++)
- c++-引用二维数组
- 《C++ primer》学习笔记之十九:奇怪的数组引用
- 学习指针引用数组
- C/C++学习笔记:指针与数组
- c数组与指针学习笔记
- c++pirmer 学习笔记之数组
- C语言学习笔记(八)--数组
- c++primer学习笔记(4.1)数组
- C语言学习笔记(四)数组
- 【C语言学习笔记】数组、字符串、指针
- java网络编程基础Socket通信应用
- Android - 动画 - 位移 - XML
- Java和Tomcat类加载机制
- C++实现质因数分解
- 二叉树的相关操作
- C++学习笔记-数组引用
- win7 开启telnet
- Centos7下配置node.js环境
- Troubleshooting Database Startup/Shutdown Problems (Doc ID 851057.1)
- 第10周项目4大奖计分赛
- 第十周项目四——评分
- Make CapsLK as an additional Ctrl @ Ubuntu 14.04+
- 队列
- PostgreSQL的行转列应用