c++基础:指针

指针

是用来存储内存地址的变量。通过指针,您可以访问和操作内存中的数据。以下是有关C++指针的一些

基本概念和用法:

1:声明和初始化指针

要声明一个指针,您需要指定指针的数据类型,然后使用*操作符来声明指针变量。指针变量可以存储其他变量的地址。

int* ptr; // 声明一个整数指针
double* dblPtr; // 声明一个双精度浮点数指针

2:要初始化指针,可以将其设置为其他变量的地址或使用动态内存分配函数(如new)来分配内存并获取其地址。

int x = 10;
int* ptr = &x; // 将ptr指向变量x的地址

int* dynamicPtr = new int; // 使用new分配内存

3:解引用指针

解引用指针意味着访问指针所指向的内存地址处的值。要解引用指针,使用*操作符。

int x = 10;
int* ptr = &x;

// 解引用ptr以获取x的值
int value = *ptr;

4:指针算术

指针可以进行算术操作,例如增加、减少,以在内存中移动到其他位置。

int arr[] = {1, 2, 3, 4, 5};
int* ptr = arr; // 指向数组的第一个元素

// 使用指针进行数组遍历
for (int i = 0; i < 5; i++) {
    std::cout << *ptr << " ";
    ptr++; // 移动指针到下一个元素
}

5:空指针

空指针是指不指向任何有效内存地址的指针,通常表示为nullptr。

int* nullPtr = nullptr; // 声明一个空指针

6:指针和数组

C++中,数组名本质上是一个指向数组第一个元素的指针。这意味着可以使用指针来访问数组元素。

int arr[] = {1, 2, 3, 4, 5};
int* ptr = arr; // 数组名是指向arr[0]的指针

// 使用指针访问数组元素
std::cout << *ptr << std::endl; // 输出1
ptr++; // 移动指针到下一个元素
std::cout << *ptr << std::endl; // 输出2

7:指针和函数

指针在函数中也经常使用,可以通过指针传递参数或返回指针作为函数的结果。

void modifyValue(int* ptr) {
    (*ptr)++; // 通过指针修改传递进来的值
}

int main() {
    int x = 10;
    int* ptr = &x;
    modifyValue(ptr); // 传递指针给函数
    std::cout << x << std::endl; // 输出11
    return 0;
}

C++中的指针是一种特殊的数据类型,它存储了一个变量的内存地址。通过指针,程序可以对变量的值和地址进行操作,使得程序具有更高的灵活性和效率。

在C++中,定义一个指针需要使用 * 符号。例如:

int* ptr;

上述代码定义了一个整型指针 ptr。

指针可以通过取地址符 & 来获取变量的地址,例如:

int num = 10;
int* ptr = &num;

上述代码定义了一个整型变量 num,并且通过指针变量 ptr 获取了 num 的地址。此时,ptr 存储的值就是 num 的地址。

指针可以通过解引用符 * 来获取指针所指向的变量的值,例如:

int num = 10;
int* ptr = &num;
cout << *ptr; // 输出:10

上述代码通过解引用符 * 获取了 ptr 所指向的 num 变量的值,即输出了 10。

指针还可以用于动态内存分配,例如:

int* arr = new int[10]; // 动态分配长度为 10 的整型数组

上述代码使用了 new 操作符动态分配了一个长度为 10 的整型数组,并将数组的首地址赋给了指针变量 arr。此时,arr 就可以像普通数组一样使用。

需要注意的是,指针也可以为空,表示指向的地址为 NULL。在使用指针时需要注意空指针的情况。文章来源地址https://uudwc.com/A/k9jmX

指针:int* p_updates:创建一个int*类型的p_updates指针,带 int*符号的就是创建int类型的指针

&updates:前面带个&符号在写上变量名:打印出来的是内存地址
p_updates = &updates:将内存地址赋值到指针变量中
*p_updates  :打印出来的是&updates地址里面的值。

原文地址:https://blog.csdn.net/qq_46107892/article/details/132880247

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年09月18日 03:32
下一篇 2023年09月18日 03:32