C/C++指针解惑

什么是指针

 说到指针,肯定要先了解一下什么是地址。在计算机中要使用数据必须放入内存中,不同类型的数据大小不同,占用的大小(字节)也不想同。为了能给准确的获取数据,计算机中会给每个字节都进行编号,以便于查找。每个字节的编号是唯一了。

image.png

 我们将内存中的编号称为地址指针

指针变量

 如果数据在内存中的地址称为指针,那么如果一个变量存储了一个数据的地址,那么我们可以称之为指针变量

image.png

定义指针变量

datatype* name;
或
datatype* name=value;
  • *表示为指针变量,datatype表示指针变量所指向的数据类型
  • 在定义指针变量的时候可以设置其指向地址value

注意value为一个地址

例:

// 定义普通变量
int num1 = 10;
int num2 = 20;

// 定义指针变量并设置其指向地址
int* p = &num1;

// 修改指针变量所指向的地址
p = &num2;

注意:

  • &表示取地址,用于获取变量的地址
  • p = &num2; p表示一个地址,所以赋值的内容也必须为一个地址

获取指针变量所指向地址中的数据

*pointer

代码

#include<iostream>
using namespace std;

int main(){

    int num1 = 10;
    
    int* p = &num1;
    
    cout<<*p<<endl;

    return 0;
}

输出结果

10

 通过上面的代码可以知道,要想通过指针获取指针所指向地址中的数据只需要在指针变量名前加*就可以获取了。

修改指针变量所指向地址中的数据

代码

#include<iostream>
using namespace std;

int main(){

    int num1 = 10;
    
    int* p = &num1;

    *p = 20;
    cout<<*p<<endl;

    return 0;
}

输出结果

20

指针对于数组

 对于数组来说,数组是一个连续的地址,而数组名则是这段连续地址的首地址,从本质上来说,数据也是指针变量。

代码:

#include<iostream>
using namespace std;

int main(){

    int a[] = {1,2,3,4};

    int* p = a;

    cout<<p[0]<<endl;
    cout<<p[1]<<endl;
    cout<<p[2]<<endl;
    cout<<p[3]<<endl;

    return 0;
}

输出结果

1
2
3
4

未完待续……

# C/C++ 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×