C++指针
2015-10-08 10:25
246 查看
1.*pa[]与(*pa)[]区别:
*pa[3]: 运算符[]优先级高于*,所以*pa[3]表明pa是包含3个指针的数组;
(*pa)[3]: pa是一个指针,它指向一个包含3个元素的数组。
2.“const int *a” 与“int* const a”的区别:
(1)const int *a = &b:不允许通过a来修改b的值,但是a可以指向其他值;
(int const *a = &b与上面的情况一样,可以指向其他值,但不能通过a来修改b的值)
(2)int* const a = &b:运行通过a来修改b的值,但是a不可以指向其他值。
总结:如果const位于*的左边,则const就用来修饰指针所指向的变量,即指针指向为常量,与1一样;
如果const位于*的右边,则const修饰指针本身,即指针本身是常量,与2一样。
eg:
3.创建二维动态数组:
ar[m]
== *(*(ar+m)+n),而*(ar+m)+n表示a[m]
的地址
4.函数指针:
double (*pf)(int): pf是输入int类型返回double类型的指向函数的指针;
double *pf(int): pf是输入int类型返回double类型指针的函数:
*pa[3]: 运算符[]优先级高于*,所以*pa[3]表明pa是包含3个指针的数组;
(*pa)[3]: pa是一个指针,它指向一个包含3个元素的数组。
2.“const int *a” 与“int* const a”的区别:
(1)const int *a = &b:不允许通过a来修改b的值,但是a可以指向其他值;
(int const *a = &b与上面的情况一样,可以指向其他值,但不能通过a来修改b的值)
(2)int* const a = &b:运行通过a来修改b的值,但是a不可以指向其他值。
int b =10; const int* a;//不一定需要初始化 int* const a;//错误 没有初始化 int* const a = &b;//正确 必须初始化 a = &b;
总结:如果const位于*的左边,则const就用来修饰指针所指向的变量,即指针指向为常量,与1一样;
如果const位于*的右边,则const修饰指针本身,即指针本身是常量,与2一样。
eg:
void main() { int b =10; int c = 5; const int *a = &b;//a可以指向其他值,但是不能通过a来修改b的值 a = &c;//a指向c的值 int* const a2 = &c;//a2不可以指向其他值,但是可以通过a来修改c的值 (*a2)++;//通过a2来修改c的值 cout <<"a="<<*a<<endl; cout <<"a2="<<*a2<<endl; //结果a=6,a2=6 }
3.创建二维动态数组:
ar[m]
== *(*(ar+m)+n),而*(ar+m)+n表示a[m]
的地址
void main() { int n = 5; //创建二维动态数组 int **a = new int* ; for(int i=0;i<n;i++) a[i] = new int ; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { a[i][j] = i+j; } } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cout<<a[i][j]<<" "; } cout<<endl; } //注意释放内存 for(int i=0;i<n;i++) delete[]a[i]; delete[]a; }
4.函数指针:
double (*pf)(int): pf是输入int类型返回double类型的指向函数的指针;
double *pf(int): pf是输入int类型返回double类型指针的函数:
相关文章推荐
- C\C++的转义字符
- 如何让类对象只在栈(堆)上分配空间?
- 《C++ Primer plus》学习笔记之”RTTI”
- 栈的链表实现C++
- C++11 range for 遍历多维数组, 迭代变量添加引用 "&"的问题
- 内存对齐以及如何关闭内存对齐
- do{}while(0)
- OC语言大总结(上)
- OC语言大总结(下)
- OC语言大总结(上)
- OC语言大总结(下)
- C语言所有作业练习题
- OC语言实现中等难度通讯录
- C语言所有作业练习题
- OC语言实现中等难度通讯录
- C++中 const 的用法
- C++中typename和class的区别
- C语言经典编程282例 明日科技 第243例改错
- Leetcode NO.290 Word Pattern
- C++ 类外定义