C/C++程序基础 (三)引用和指针
2018-06-17 20:57:18来源:未知 阅读 ()
- 引用
- 引用变量与原始变量共享同一地址 int &a = b 则 &a = &b
- 引用类型的变量必须在声明时初始化,且不可以更换指向变量
- 常量的引用必须是常量引用,非常量的引用可以是常量也可以是非常量
- 字符串交换
-
// 引用 void swap(char* &a, char* &b) { char* temp = a; a = b; b = temp; } //指针的指针(调用时使用引用操作符取地址) void swap(char **a, char **b) { char* temp = *a; *a = *b; *b = temp; }
引用(更安全)和指针的区别
- 初始化,引用必须在声明时初始化,而指针不必要
- 可修改,引用不可修改为其他变量的引用,而指针可以指向不同内存
- NULL,引用必须有指向的变量,不可以为空。指针可以为NULL。
- 测试需要,引用使用前不需要进行判断,指针则需要检查指向问题。
- 应用,引用多用于单一指向,指针支持指向变化。
- 总结:引用本质是通过指针实现的,由编译器处理,封装了一个像变量一样的“指针”。既高效,又方便。
- 常量指针(指向常量的指针) 指针常量(是常量的指针)
- 成员函数
- 静态成员函数:属于类,没有this指针
- 成员函数:属于类,有this指针
- 友元函数:非成员函数,仅在类定义中声明为友元函数,可以访问类的私有等成员,没有this指针。
- 指针数组 与 数组指针
- 指针数组:int *a[10]。整形指针的数组
- 数组指针: int (*a)[10]。指向整形数组的指针。delete [] a
- 指针函数 与 函数指针
- 指针函数,本质上是函数,返回值为指针。如 int* func(int , int)
- 本质上是指针, int (* func)(int , int)。可以使用typedef 定义函数指针类型。
- 指针函数,本质上是函数,返回值为指针。如 int* func(int , int)
-
int max(int , int); // 函数指针的定义和使用 int main() { int (*p)(int, int); p = &max; (*p)(1,2); } // typedef 定义函数指针 typedef int (*pfunc)(int, int) int main() { pfunc p = &max; }
野指针
- 不等于NULL指针。指向“垃圾”内存
- 原因:未初始化;已回收的内存空间未置NULL。
- malloc/ free 和 new/delete 区别
- 相同点:都可以动态分配和回收内存
- 不同:前者为标准库函数,后者为操作符。后者除了分配和回收内存外,在编译器的支持下,还可以进行自定义数据类型的初始化,调用构造和析构函数。
- malloc, calloc, realloc, free
- malloc: 参数size_t, 返回值void*。分配指定大小的连续内存,并返回首地址。(维护空闲内存块的列表,查找,分配,整理等)
- calloc: 参数n, size_t,返回值void*。分配n块指定大小的连续内存,并返回首地址。
- realloc: 参数void*, size_t,返回值void*。扩展ptr的空间为size_t,返回首地址(可能重新分配和拷贝)。
- free:参数void*。释放ptr指向的内存空间。
- 内存分配方式 对应 三种存储区域
- 静态存储区域分配:编译时分配,全局变量等。
- 栈:函数调用的局部变量等存储单元。容量有限。
- 堆:malloc, free, new , delete等函数管理。
- 句柄 与 指针
- 句柄:本质上是指向指针的指针,与windows系统资源有关,获取系统提供的服务。是windows为了向用户屏蔽内存管理导致的内存地址变动。
- 指针:通常由开发者创建、维护、销毁。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:C/C++程序基础 (四)字符串
下一篇:c++引用与指针的关系
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash