C++中的细节(数组指针)
2013-09-30 11:32
176 查看
1. 数组指针
//在win32上验证
int ar[][4]={{1,2,3,4},{5,6,7,8}};
cout<<*ar+1<<endl; //@1 return the local of point:0028FD74
cout<<*(ar+1)<<endl; //@2 return the local of point:0028FD80, @1@2两种不同的写法相差字节为12,正好是4个整形的存储空间,也就是@2是5的存储地址
cout<<*(*ar+1)<<endl; //return 2, 验证了*arr为数组中{1,2,3,4}为数组的首地址
cout<<*(*ar+4)<<endl; //return 5, 验证了C++中存放数组的地址是一块连续的内存地址
//然后接着验证
cout<<arr<<endl; //@3
cout<<*arr<<endl; //@4, 可以发现@3@4返回相同的地址
//是不是清晰点了?所以也就有了下面的这个
int **arr=new int[][2];
//这里必须注意,arr是个常量指针,不能修改的哦
有了上面的知识,下面在一个二维数组中进行查找。这里需要特别说明的是,metr是一个二维数组,所以在函数内部采用了row*columns+column的形式,大家可以试试传递的形式写成int**metr,我没有试出来....
//在win32上验证
int ar[][4]={{1,2,3,4},{5,6,7,8}};
cout<<*ar+1<<endl; //@1 return the local of point:0028FD74
cout<<*(ar+1)<<endl; //@2 return the local of point:0028FD80, @1@2两种不同的写法相差字节为12,正好是4个整形的存储空间,也就是@2是5的存储地址
cout<<*(*ar+1)<<endl; //return 2, 验证了*arr为数组中{1,2,3,4}为数组的首地址
cout<<*(*ar+4)<<endl; //return 5, 验证了C++中存放数组的地址是一块连续的内存地址
//然后接着验证
cout<<arr<<endl; //@3
cout<<*arr<<endl; //@4, 可以发现@3@4返回相同的地址
//是不是清晰点了?所以也就有了下面的这个
int **arr=new int[][2];
//这里必须注意,arr是个常量指针,不能修改的哦
有了上面的知识,下面在一个二维数组中进行查找。这里需要特别说明的是,metr是一个二维数组,所以在函数内部采用了row*columns+column的形式,大家可以试试传递的形式写成int**metr,我没有试出来....
bool find(int* metr, int rows, int columns, int number){ bool bf=false; if(metr!=NULL && rows>0 && columns>0){ int row=0; int column=columns-1; while(row<rows && column>=0){ if(metr[row*columns+column]==number){ bf=true; break; } else if(metr[row*columns+column]>number){ --column; } else{ ++row; } } } return bf; }
相关文章推荐
- C++中各种类型转换的具体细节<未完成>
- 嵌入式C/C++面试题汇总解答(II)--嵌入式程序员必看的代码细节
- C/C++细节笔记(不断添加ing...)
- [C++] 我们需要掌握多少语法细节
- C++细节
- 关于C++在编码时的一些细节
- Windows Via C/C++:线程实现细节
- C++ 数组指针
- C++在使用Qt中SLOT宏须要注意的一个小细节
- 彻底搞清C/C++中一维数组,二维数组,指针,数组指针和指针数组以及指向指针的指针,行地址和列地址之间的关系
- C++那些细节--extern关键字&&全局变量定义问题
- 关注C++细节——static类成员使用注意
- C++小细节(不定期整理 )
- C++ 类的继承——继承的细节
- 讨论记录之C++细节
- C++中的各种小细节(三)
- c++ template 易错语言细节
- C++语法基础--类(class)--类型别名,this指针,初始化式,友元的一些注意细节
- C++多继承的细节
- quick 2.23 它们的定义c++代码lua与总结的一些细节