c++基础知识篇:指针
2024-08-27 19:30:45
从面试的反馈来看,这部分可以问的很难。
1、指针与引用的区别
指针是一个变量,用来存放地址的变量。引用是原来变量的存储空间的别名。
2、指针作为参数的要点
a、需要进行指针的合法性检验,防止空指针。
b、需要修改指针本身指向的地址时,参数需要是该指针的引用。
3、c++程序运行空间
数据区(Data Area):全局变量、静态变量、常量存放在数据区。
代码区(Code Area):所有类成员函数和非成员函数
栈区(Stack Area):为运行函数分配的局部变量、函数参数、返回数据、返回地址,函数运行结束,自动释放。
堆区(Heap Area):new malloc分配的空间
char *strA()
{
const char *p_1 = "hello"; //指向数据区,属于常量数据,不能按位修改
char p_2[] = "hello"; //局部数组,位于栈区,返回地址无意义
static char p_3[] = "hello"; //位于静态数据区,注意:static变量在编译期初始化
p_3[0] = 'a';
return p_3;
}
需要补充学习c++对象模型。了解对象的存储区分配。
4、指针的声明
int (*f)(int, int); //函数指针
int (*(*f)(int, int))(int); //函数指针,指向的函数返回一个函数指针
f = &func; //函数指针赋值
f = func; //函数指针赋值 int *(*p)[10]; //声明一个指针,这个指针指向一个指针数组
int **p[10]; //声明一个数组,元素类型是指向指针的指针 const int* p; //指向常量的指针
int * const p; //指针常量
最新文章
- 2-SAT 问题
- SQL Server2008 with(lock)用法
- POJ 1141 Brackets Sequence(DP)
- MySQL- -Join语法解析与性能分析
- 【BZOJ】1036: [ZJOI2008]树的统计Count(lct/树链剖分)
- centosx64位寄存器
- CSS禅意
- 27个Jupyter快捷键、技巧(原英文版)
- NYOJ 45 棋盘覆盖
- JavaScript设计模式_03_代理模式
- C++ Primer高速入门之三:几种常见的控制语句
- django 多对多自定义第三张表时的注意事项
- Mac休眠后解决卡死转圈问题
- django 获取用户提交的数据 文件 表单
- Jmeter性能监测及安装插件(推荐)
- 查看java进程启动的详细参数和过程
- jQuery UI.Layout 参数
- c++的.o文件的链接顺序
- ActivityStream是什么?什么是Feed流?
- button 默认类型是submit