• C语言—指针入门


    内存存放数据

    在这里插入图片描述
    在这里插入图片描述
    如果发送指令,读取f变量的内容,则先找f - >10005这个字节,然后再找到123。

    指针和指针变量

    通常说的指针就是地址的意思,C中有专门的指针变量存放指针。一个指针占4个字节。
    在这里插入图片描述

    定义指针变量

    类型名 *指针变量名

    char *pa;// 定义一个指向字符型的指针变量
    int *pb; // 定义一个指向整型的指针变量
    
    • 1
    • 2

    取地址和取值

    如果需要获取某个变量的地址,可以使用取地址运算符 (&):

    char *pa = &a;
    int *pb = &f;
    
    • 1
    • 2

    如果需要访问指针变量指向的数据,可以使用取值运算符 (*)

    printf("%c,%d\n",*pa, *pb);
    
    • 1

    例1

    #include 
    #include 
    
    int main() 
    {
        char a='F';
        int f=123;
        
        char *pa=&a;//获取变量a的地址 ,存入指针变量pa中 
        int *pb=&f;//获取变量f的地址 ,存入指针变量pb中 
        
        printf("a=%c\n",*pa); 
        printf("f=%d\n",*pb); 
        
    
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    a=F
    f=123
    
    • 1
    • 2

    例2

    #include 
    #include 
    
    int main() 
    {
        char a='F';
        int f=123;
        
        char *pa=&a;//获取变量a的地址 ,存入指针变量pa中 
        int *pb=&f;//获取变量f的地址 ,存入指针变量pb中 
        
        printf("a=%c\n",*pa); 
        printf("f=%d\n",*pb); 
        
        *pa='C';
        *pb+=1;
        
        printf("Now a=%c\n",*pa); 
        printf("Now f=%d\n",*pb); 
    
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    a=F
    f=123
    Now a=C
    Now f=124
    
    • 1
    • 2
    • 3
    • 4

    例3

    #include 
    #include 
    
    int main() 
    {
        char a='F';
        int f=123;
        
        char *pa=&a;//获取变量a的地址 ,存入指针变量pa中 
        int *pb=&f;//获取变量f的地址 ,存入指针变量pb中 
        
        printf("a=%c\n",*pa); 
        printf("f=%d\n",*pb); 
    
        
        printf("sizeof 指针pa = %d\n",sizeof(pa));
        printf("sizeof 指针pb = %d\n",sizeof(pb));
        
        printf("address of 指针pa = %p\n",pa);
        printf("address of 指针pb = %p\n",pb);
        
    
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    a=F
    f=123
    sizeof 指针pa = 8
    sizeof 指针pb = 8
    address of 指针pa = 000000000062FE0F
    address of 指针pb = 000000000062FE08
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    避免访问未初始化的指针

  • 相关阅读:
    NODEJS杂记
    MySQL精髓:如何使用ALL一次找到最大值
    区间DP day42
    裁剪图片vue-cropper实例 基础功能 预览 获取裁剪后图片数据
    React中使用usePrevious的意义是什么,为啥要用它
    这个需求怎么做java面试题
    hadoop 3.3大数据集群搭建系列1-安装hadoop
    常见面试题-MySQL软删除以及索引结构
    第三章 内存管理 七、具有快表的地址变换结构
    Android自定义控件(二) Android下聚光灯实现
  • 原文地址:https://blog.csdn.net/xiaofeixia002X/article/details/134415046