当前位置: 首页 > wzjs >正文

网站后台上传文章建设银行网站修改

网站后台上传文章,建设银行网站修改,h5设计制作是什么,服饰技术支持 东莞网站建设指针的高阶用法(C) 指针在C中是一个强大的工具,除了基础的指向变量和动态内存分配外,还有许多高阶用法可以提高代码的效率和灵活性。 函数指针 函数指针允许将函数作为参数传递或存储在数据结构中,常用于回调机制和…

指针的高阶用法(C++)

指针在C++中是一个强大的工具,除了基础的指向变量和动态内存分配外,还有许多高阶用法可以提高代码的效率和灵活性。

函数指针

函数指针允许将函数作为参数传递或存储在数据结构中,常用于回调机制和策略模式。
定义函数指针的语法:

// 定义一个指向函数的指针,该函数接受两个int参数并返回int
int (*funcPtr)(int, int);

使用示例:

int add(int a, int b) { return a + b; }
int subtract(int a, int b) { return a - b; }funcPtr = add; // 指向add函数
cout << funcPtr(3, 5); // 输出8funcPtr = subtract; // 指向subtract函数
cout << funcPtr(5, 3); // 输出2

指针与多态

通过基类指针调用派生类函数是实现运行时多态的核心机制。
示例:

class Base {
public:virtual void print() { cout << "Base" << endl; }
};class Derived : public Base {
public:void print() override { cout << "Derived" << endl; }
};Base* ptr = new Derived();
ptr->print(); // 输出"Derived",多态调用
delete ptr;

智能指针

智能指针(如std::unique_ptrstd::shared_ptr)自动管理内存,避免内存泄漏。

std::unique_ptr示例:

#include <memory>
std::unique_ptr<int> uptr(new int(10));
cout << *uptr; // 输出10
// 无需手动删除,超出作用域自动释放

std::shared_ptr示例:

std::shared_ptr<int> sptr1 = std::make_shared<int>(20);
std::shared_ptr<int> sptr2 = sptr1; // 共享所有权
cout << *sptr2; // 输出20

指针与数组的灵活操作

指针可以像迭代器一样遍历数组,支持指针算术运算。
示例:

int arr[] = {1, 2, 3, 4, 5};
int* p = arr; // 指向数组首元素
for (int i = 0; i < 5; ++i) {cout << *(p + i) << " "; // 输出1 2 3 4 5
}

指向指针的指针(双指针)

双指针常用于动态二维数组或修改指针本身。
动态二维数组示例:

int** matrix = new int*[3];
for (int i = 0; i < 3; ++i) {matrix[i] = new int[4]{i, i+1, i+2, i+3};
}
// 释放内存
for (int i = 0; i < 3; ++i) {delete[] matrix[i];
}
delete[] matrix;

指针与STL算法的结合

指针可以与STL算法一起使用,例如排序普通数组。
示例:

#include <algorithm>
int data[] = {5, 2, 9, 1, 5};
std::sort(data, data + 5); // 排序数组
for (int n : data) cout << n << " "; // 输出1 2 5 5 9

类型安全的指针转换

使用static_castdynamic_cast等操作符进行类型转换。
dynamic_cast示例(需多态类):

Base* b = new Derived();
Derived* d = dynamic_cast<Derived*>(b); // 安全向下转换
if (d) {d->print(); // 输出"Derived"
}
delete b;

这些高阶用法可以显著提升C++程序的灵活性和性能,但需谨慎处理内存和类型安全。

http://www.dtcms.com/wzjs/537637.html

相关文章:

  • 做网站接单的网站石家庄 外贸网站建设
  • 安徽省工程建设信息网站织梦视频网站源码
  • 网站模板教程电子商务网站建设与管理感想和收获
  • 狮山网站建设公司网站建设基础与网页设计
  • 网站用的是建站公司的系统万网虚拟机怎么做两个网站
  • 与女鬼做的网站网站建设制作哪家便宜
  • 网站建设找什么工作买域名有什么用
  • 国内哪个网站做水产比较大诱导视频网站怎么做
  • 长安网站建设定制广州新塘网站建设推广公司
  • 重庆建设集团网站网络推广的渠道
  • 怎么用微信做网站网站开发后怎么进入互联网
  • 建一个优化网站多少钱免费推广网站
  • 用织梦做的网站好还是cms北京公司注册核名网站
  • 常用的英文网站字体啥十小企业网站建设
  • 网站的布局云商城官网
  • 广州微网站软件实施工程师
  • 昆明网站建站平台热点链接到另一个网站怎么做
  • 运城个人网站建设wordpress优质插件
  • 网站开发还是安卓开发好平台网站开发多少钱
  • 做网站要用服务器吗wordpress 微信导航
  • 地铁网站建设特点dw网站建设教程视频教程
  • 用阿里云建设网站江苏城乡建设学校网站
  • 制作一个网站的步骤wordpress中的搜索
  • 东莞网站制作怎么做秒赞网站
  • 有没有网站教做美食的购买网站域名
  • 简述网络营销发展趋势做网站域名怎么选有利于seo
  • 高端网站设计地址wordpress文章目录在哪里
  • 金华网站制作网站 功能需求
  • 河北网站建设方案多张图做网站背景
  • 龙岗龙城街道网站建设wordpress图片转移