Skip to content

Latest commit

 

History

History
68 lines (44 loc) · 1.58 KB

2022-5-31-指针.md

File metadata and controls

68 lines (44 loc) · 1.58 KB

https://www.bilibili.com/video/BV1Gi4y1w7yG?spm_id_from=333.337.search-card.all.click

image-20220531193730955

image-20220531193805365

使用&获取某个变量的地址

使用*获取该地址对应的值

image-20220531195018887

对于声明一个指针,需要在要指向的原数据结构的指针上加一个*

如需要创建一个指针指向int

和需要创建一个指针指向int**

int *ptr=&ptr//加一个
int** *ptr3=&ptr//也是加一个
#include <iostream>

using namespace std;
int main() {
    int num=10;
    int *ptr=&num;
    cout<<ptr<<endl;
    cout<<*ptr;
    return 0;
}

//0x3bdcfe14
//10

以下语法效果对比

*ptr=20;//num=20
int *ptr1=20;//非法语句,不能直接指向
char *ptr='H';//同样非法,不能直接指向
char *ptr="Hello";//合法但不建议的做法
int **ptr2=&ptr;//合法的创建了一个指向指针的指针
int **x=&num;//这不合法
int **ptr2=&ptr;
*ptr2=5;//这句话是合法的,此时ptr就等于0x5(间接修改了ptr的值,ptr2的值不受影响)(因为确实不是该ptr2啊,*代表其指向的值啊)
cout<<*ptr//这句话报错,访问了0x5所指向的值,然而这越界了