【C++ Primer Plus】指针
来源:互联网 发布:php sql server 编辑:程序博客网 时间:2024/06/13 22:46
声明指针
int *p;
这表明*p的类型为int,p指向int类型;
p是指针(地址),而*p是int,而不是指针
注意:
- int *p1, p2; //这里是声明一个指针(p1)和一个int变量p2
- 在C++中,int *是一种复合数据类型,是指向int的指针
- 可以用同样语法声明其他类型的指针:double *dp,char *str
初始化指针
int higgens = 5;int *pt = &higgens;cout << "value of higgens: " << higgens << endl;cout << "address of higgens: " << &higgens << endl;cout << "value of *pt: " << *pt << endl;cout << "value of pt: " << pt << endl;
输出结果:
value of higgens = 5address of higgens = 0x7ffddf94ac64value of *pt = 5address of pt: 0x7ffddf94ac64
使用new来分配内存
C语言可以使用malloc函数分配内存:
int *value = (int*)malloc(sizeof(int));
还可以这样
int value;int *p = &value;
C++有更好的方法:new运算符。
int *value = new int;
通用格式: typeName *pointer_name = new typeName;
- 不对比就没有伤害,哈哈,确实使用new运算符简便得多
- new int 告诉程序需要适合存储int的内存,new运算符根据类型确定需要多少字节的内存,然后分配内存,并返回改内存块的地址。
- 上边是C++ Primer Plus原话,简单来说就是new一块int的内存块,然后把地址赋给value
使用delete释放内存
如果使用new分配内存,一定要使用delete释放,否则会发生内存泄露(memory leak)
int *ps = new int;...delete ps;
使用new创建动态数组
//创建10个int元素的数组int *psome = new int[10]; // 返回第一个元素的地址//当使用完后用delete释放delete []psome;
Example:
double *p = new double[3];p[0] = 2.4;p[1] = 2.1;p[2] = 3.3;cout << "value of p[1]: " << p[1] << endl;delete []p; // free the memory
使用new与delete规则
- 不要使用delete释放不是new分配的内存
- 不要使用delete释放同一个内存块两次
- 如果使用new[]为数组分配内存,则应使用delete[]释放
- 如果使用new[]为一个实体分配,则应使用delete(没有方括号)释放
- 对空指针应用delete是安全的
指针、数组、指针算术
C++将数组名解释为地址,指针+1后将指向下一个地址
int array[] = {1, 24, 433, 234};int *pArray = array; //将array地址赋值pArray,pArray指向array首元素地址,此时*pArray = 1++pArray; //此时*pArray = 24
指针小结
- 声明指针格式:
typeName *pointerName;
……
阅读全文
0 0
- C++:C++primer plus 指针问题理解
- C primer plus:指向函数的指针
- C++Primer Plus 第十章-this指针
- C Primer Plus(九) -3指针简介
- C Primer Plus学习 十八 指针简介
- c++primer plus复合类型之指针
- 学习《C Primer Plus》---指针常量与常量指针
- 【C++ Primer Plus】指针
- 【C Primer Plus】第十章 数组和指针(一)
- 【C Primer Plus】第十章 数组和指针(二)
- C primer plus第10章(指针)习题
- 《C Primer Plus 5th》读书笔记-----指针和多维数组
- 学习《C Primer Plus》---把字符串看作指针
- c primer plus第10章总结:数组和指针
- C Primer Plus学习 十九 指针和数组
- C Primer Plus学习 二十 函数、数组和指针
- C Primer Plus学习 二十一 指针操作
- C Primer Plus学习 四十五 指向结构的指针
- int、long、long long、unsigned int、_int64的取值范围(与不同位数的编译器有关)
- 利用ajax对页面局部刷新
- 在一个千万级的数据库查寻中,如何提高查询效率?
- 如何让你的浏览器没有广告?
- UE4 Login相关代码
- 【C++ Primer Plus】指针
- bzoj2142 礼物
- 2017年9月感触
- 这,第一篇博客 CROSS ROAD
- 性能优化的浅析
- 软件工程第二章知识点小结
- springboot 整合 redis 主从同步 sentinel哨兵 实现商品抢购秒杀
- LeetCode69. Sqrt(x)
- MappedByteBuffer基本使用与优点