指针

变量地址

int a;
std::cout<<"变量地址:"<< &a <<std::endl;

指针作用

int a;
int  *p=&a; //指针存放变量的地址

64位指针变量占用 8
32位指针变量占用 4

指针使用

指针变量在使用之前必须要初始化赋值;
c11+

int *p = nullptr;

早期

int *p=NULL;

指针解引用

int a =1;
int  *p=&a;
std::cout << "*p解引用的值"<<*p<<std::endl;

指针参数

// 修改变量的值通过指针参数
void modifyValue(int* ptr) {
    *ptr = 42;  // 修改指针指向的变量的值
}
int main() {
    int x = 10;
    modifyValue(&x);  // 传递 x 的地址
}

解决内存拷贝

常量指针

const int* ptr; // 常量指针,不能通过 ptr 修改指向的内容,但可以修改 ptr 指向其他地方

形参的值不需要修改 建议加上const

指针常量

int x = 10;
int* const ptr = &x; // 指针常量,不能修改 ptr 的值(地址),但可以通过 ptr 修改 x 的值

在定义的同时必须初始化,可以通过解引用的方法修改内存地址中的值。
这种形式可以叫做引用

常量指针常量

#include <iostream>

int main() {
    int x = 10;
    int y = 20;

    const int* const ptr = &x; // 常量指针常量,不能修改指针的指向和指向的内容
    std::cout << *ptr << std::endl; // 通过 ptr 读取 x 的值
    // ptr = &y; // 错误,不能修改指针的指向
    // *ptr = 30; // 错误,不能修改指针指向的内容

    return 0;
}

常量指针常量的特点是既保护了指针的指向,也保护了指针指向的内容,从而提供了更高的安全性和严格性。它适用于需要确保指针和所指向数据都不被修改的场景,可以帮助预防意外的数据变化。

void指针参数

无类型指针,表示接收任意数据类型的指针。

// 转成16键值
int *a=10;
(void *)&a
c++

win32位处理

2023-8-7 15:22:02

c++

动态内存分配

2023-8-8 0:19:31

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索