&(取引用 reference)和*(解引用 dereference)在二维数组时候的使用
2011-06-10 21:56
441 查看
取引用&的时候,把它后面的标识符视为一个变量,尤其是对于一个数组的时候(无论是几维的),&后加上数组的标识符就是表示取这个数组的首地址,注意:对于一维数组&A就是取数组首地址,对于二维数组&A[0]还是取数组第一行的首地址;对于三维数组&A[0]就是取第一个二维数组的首地址,&A[0][0]就是取第一个第三维数组的首地址,因为对于二维和三维数组而言,A[0]和A[0][0]都还是另外一个数组的首地址(也可以看作是另外一个数组的标识符)。
解引用*的时候,后面跟的是一个指针,特别对于一个数组而言时如果是数组的标识符,则是视为指针来处理的,解引用的结果就是得到了这个指针所指向的那块地址空间中所包含的内容。
测试代码如下:
void main(){
int ia1[2] = {1,2};
int *pInt = ia1;
cout << ia1 << endl;
cout << &ia1 << endl;
cout << *ia1 << endl;
cout << &ia1 << endl;
cout << "---------------------------------------"<< endl;
int ia2[2][2] = {{1,2},{3,4}};
int (*pA)[2] = ia2;
cout << &(*pA) <<endl;
cout << ia2 << endl;
cout << *ia2 << endl;
cout << *(ia2+1) << endl;
cout << ia2[1] << endl;
cout << &ia2 <<endl;
cout << ia2[0] <<endl;
cout << *ia2[0] << endl;
cout << &ia2[0] <<endl;
cout << &ia2[0][0] << endl;
cout << "---------------------------------------"<< endl;
int ia3[1][1][1] = {{{1}}};
int (*pB)[1][1] = ia3;
cout << ia3 << endl ;
cout << *ia3 << endl;
cout << &ia3 << endl;
cout << ia3[0] << endl;
cout << *ia3[0] << endl;
cout << &ia3[0] << endl;
cout << ia3[0][0] << endl;
cout << *ia3[0][0] << endl;
cout << &ia3[0][0] << endl;
}
其实理解上跟上次写的那个二维数组的指针运用的日志是一样的。
解引用*的时候,后面跟的是一个指针,特别对于一个数组而言时如果是数组的标识符,则是视为指针来处理的,解引用的结果就是得到了这个指针所指向的那块地址空间中所包含的内容。
测试代码如下:
void main(){
int ia1[2] = {1,2};
int *pInt = ia1;
cout << ia1 << endl;
cout << &ia1 << endl;
cout << *ia1 << endl;
cout << &ia1 << endl;
cout << "---------------------------------------"<< endl;
int ia2[2][2] = {{1,2},{3,4}};
int (*pA)[2] = ia2;
cout << &(*pA) <<endl;
cout << ia2 << endl;
cout << *ia2 << endl;
cout << *(ia2+1) << endl;
cout << ia2[1] << endl;
cout << &ia2 <<endl;
cout << ia2[0] <<endl;
cout << *ia2[0] << endl;
cout << &ia2[0] <<endl;
cout << &ia2[0][0] << endl;
cout << "---------------------------------------"<< endl;
int ia3[1][1][1] = {{{1}}};
int (*pB)[1][1] = ia3;
cout << ia3 << endl ;
cout << *ia3 << endl;
cout << &ia3 << endl;
cout << ia3[0] << endl;
cout << *ia3[0] << endl;
cout << &ia3[0] << endl;
cout << ia3[0][0] << endl;
cout << *ia3[0][0] << endl;
cout << &ia3[0][0] << endl;
}
其实理解上跟上次写的那个二维数组的指针运用的日志是一样的。
相关文章推荐
- 使用&引用处理的foreach 和 二维数组的遍历
- php foreach 使用&(与运算符)引用赋值要注意的问题
- 使用支付宝集成支付报错 Undefined symbols for architecture x86_64: "_BIO_ctrl", referenced from: _rsa_si
- 字符串使用&&引用对象作为函数参数
- Xcode如何使用<>来引用静态库
- 引用:&(reference)与间接引用:*(dereference)
- 使用< OBJECT >标记引用对象
- 使用< OBJECT >标记引用对象
- 'Invalid parameter not satisfying: URLString'网络请求的时候get使用特殊字符和汉字崩溃的恶心bug解决方法
- 使用webstorm+webpack构建简单入门级“HelloWorld”的应用&&引用jquery来实现alert
- <context:component-scan>使用说明
- 读书笔记 effctive c++ Item 20 优先使用按const-引用传递(by-reference-to-const)而不是按值传递(by value)
- 使用&nbsp;Oracle&nbsp;Universal&nbsp;Installer&nbsp;…
- <<gdb使用经验技巧>>
- 什么时候应使用指针形参?什么时候就使用引用形参?解释两者的优点和缺点。
- &lt;Jsp:param标签的使用
- 使用fsck命令修复linux文件系统错误【避开引起系统崩溃,启动不了的"-a"选项】
- ··· Socks Online - 在内部网也能使用QQ ···
- <tx:annotation-driven>使用说明
- 使用truss、strace或ltrace诊断软件的"疑难杂症"