c语言数组与指针的学习与思考
2016-05-18 20:09
246 查看
注:不知具体原因,在我的机器上地址的位数是48,占用了8个字节,在这个已知条件下进行分析。 1.double c[3][6] 直接声明的二维数组 是一块连续的内存空间,大小3×6×8 = 144字节; double c[3][6]; cout<<(void*)c<<endl; cout<<c<<endl; cout<<c[0]<<endl; cout<<&c[0][0]<<endl; cout<<&c[0][1]<<endl; cout<<&c[0][5]<<endl<<endl; cout<<c[1]<<endl; cout<<&c[1][0]<<endl; cout<<"size:"<<endl; cout<<sizeof(c)<<endl;//数组的最开始 cout<<sizeof(*c)<<endl;//相当于c[0] 表示一维的数组 cout<<sizeof(**c)<<endl;//相当于c[0][0]指向一个具体的元素 //再多层数的指针就没有具体意义了 输出如下: 0x7ffde665ca80 0x7ffde665ca80 0x7ffde665ca80 0x7ffde665ca80 0x7ffde665ca88 0x7ffde665caa8 0x7ffde665cab0 0x7ffde665cab0 size: 144 48 8 2. double* c[3][6];存储指针的二维数组 double* c[3][6]; cout<<(void*)c<<endl; cout<<c<<endl; cout<<c[0]<<endl; cout<<&c[0][0]<<endl; cout<<&c[0][1]<<endl; cout<<&c[0][5]<<endl<<endl; cout<<c[1]<<endl; cout<<&c[1][0]<<endl; cout<<"size:"<<endl; cout<<sizeof(c)<<endl; cout<<sizeof(*c)<<endl; cout<<sizeof(**c)<<endl; cout<<sizeof(***c)<<endl; 输出如下: 0x7ffe2f1a66f0 0x7ffe2f1a66f0 0x7ffe2f1a66f0 0x7ffe2f1a66f0 0x7ffe2f1a66f8 0x7ffe2f1a6718 0x7ffe2f1a6720 0x7ffe2f1a6720 size: 144 48 8 8 可以看出与1中double类型的二维数组存储并无区别,只是一个存的是double类型的值,一个存的是指向double类型的指针,所以×××c还是有意义的; 3. double (*c)[3][6]; cout<<"size:"<<endl; cout<<sizeof(c)<<endl; cout<<sizeof(*c)<<endl; cout<<sizeof(**c)<<endl; cout<<sizeof(***c)<<endl; 输出如下: 8 144 48 8 大小关系虽然明白了,可是却不明白这样定义的一个数组的内存结构是否和1,2完全一样,也不知如何对每个元素赋值。 4经典问题: double* (*c)[3][6]; cout<<"size:"<<endl; cout<<sizeof(c)<<endl; cout<<sizeof(*c)<<endl; cout<<sizeof(**c)<<endl; cout<<sizeof(***c)<<endl; cout<<sizeof(****c)<<endl; 输出如下: size: 8 144 48 8 8 所以说只是例1和例2的区别。
相关文章推荐
- C++成员变量的初始化顺序问题
- 快速幂(C语言实现) 超详细 (转载)
- c++数据类型相互转
- C++学习笔记(四)C++ 概述
- boost--timer库笔记
- C++Primer笔记 第一章
- 基于C语言的动态沙漏
- C++学习笔记(三)输入和输出
- C++第5次上机实验
- C++第5次上机作业
- C++ 转换类型运算符 通过operator关键字进行转换
- C++ 转换类型运算符 调用构造函数将变量转化成为一个对象的成员变量
- C++ 转换类型运算符 调用构造函数实现的类型转换
- (未完成)C++ 重载赋值运算函数 operator =
- leetcode_58 Length of Last Word C++
- (未完成)C++ 重载家法运算函数 operator+
- (未完成)C++ 重载后置自加运算符
- 第六届蓝桥杯决赛C++B组第一题 积分之谜
- C++ 创建临时对象
- C++ 温习笔记(3) - auto_ptr,string