【c++】函数的 指针类型参数(const *)

指针类型参数提供了一种灵活而高效的方式来处理数据结构、内存管理和函数调用,使得程序更加高效、可维护和可扩展。然而,指针操作也需要谨慎使用,以避免潜在的内存泄漏和错误。

了解指针

指针与常规类型变量一样,只不过一般变量的值是显式的值(例如:一个整数5、一个字符串”nice");而指针类型变量的值是一个地址,同时指针也占有一个内存。

声明一个指针

int age = 20;
int *pointInt = &age;		// 声明并初始化指针,指向age变量
//-- 访问指针指向的值
cout << *pointInt << endl;	// * 解引用运算符

动态内存分配

在C++中,动态内存分配是通过newdelete 操作符来实现的。动态内存分配允许在程序运行时分配内存,使得程序执行更加灵活。

静态内存分配,是一种在程序执行前就确定分配好内存空间的方式。在静态内存分配中,内存空间在程序编译时就被分配好了,程序运行时不会动态地分配或释放内存。这种方式通常用于全局变量、静态变量以及常量等的存储。

int *ptr = new int(5); 		// 使用 new 分配成功后返回一个指向内存的指针;
delete ptr; 	// 释放内存
  • 内存泄露

    分配后的内存未被及时释放,减少了系统可用的内存量,降低程序的执行速度;

  • 内存池

    自由存储区表现为一个内存池,是一种内存抽象,程序可以分配、释放其中内存;

指针的 ++ / - -

  • 执行后,指向相邻同类型的值,并非相邻的字节;

    // -- 执行过程
    (Type)指针 +/- sizeof(Type) ==>>/上一个同类型的值
    

const 用于指针

// -- 地址常量
int *const point = &age;
// -- 数据常量
const int * point = &age;
// -- 地址、数据均常量
const int *const point = &age;

指针传递给函数

  • 指针类型参数的好处

    - 直接访问和修改内存中的数据,不需要进行复制;
    - 更灵活的操作数据结构;
    
  • 注意

    尽量使用 const 确保函数不会修改特定的参数值;

  • 缺点

    指针可能无效,因此使用时要检查有效性,避免非法访问导致程序崩溃;

数组与指针

数组类似于固定内存范围内发挥作用的指针

/* 数组和指针可以分别使用对方的访问方式 */
int myArray[19] = { . . . };	// *(myArray + i)进行访问
int *pointA = myArray;			// point[i] 访问

总结

  • 务必将指针初始化为有效地址 / NULL;
  • 务必在指针有效时才使用它;
  • new 分配内存后记得 delete 释放,并且释放后不要再访问它;
  • 不要对同一个内存地址 delete 多次;
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值