第6章 C语言的指针变量 (二)

发布于:2023-01-04 ⋅ 阅读:(252) ⋅ 点赞:(0)

文档视频讲解链接地址

  1. 腾讯课堂链接 : 51_指针_指针变量
  2. 腾讯课堂链接 : 52_指针_指针与地址
  3. 腾讯课堂链接 : 53_指针_指针小节复习

6.2 指针变量

  1. 指针变量

    • 指针变量的定义

      • 一般形式: [存储类型] 数据类型 *指针变量名;
    • 01-c-78

    • 在C/C++语言程序设计中还经常使用空指针的概念。

    • 所谓空指针就是指针变量的内容为零的状态。

    • 注意:空指针并不是指针存储器为空或没有的概念,而是指针存放着特定的值为零值。

  2. 指针变量的定义

    • 一般形式如下:
      <存储类型> <数据类型> *<指针变量名> ;
    • 例如,char *pName ;
    • 指针的存储类型是指针变量本身的存储类型。
    • 指针说明时指定的数据类型不是指针变量本身的数据类型,而是指针目标的数据类型。简称为指针的数据类型。
    • 具有相同类型的变量和相同数据类型的指针可以在一个说明语句中说明。
  3. 指针在说明的同时, 也可以被赋予初值,称为指针的初始化。

    • 一般形式是:
	<存储类型>  <数据类型>  *<指针变量名> = <地址量> ; 
例如 : int  a,  *pa=&a ;  //具有相同类型的变量和相同数据类型的指针可以在一个说明语句中说明。
在上面语句中,把变量a的地址作为初值赋予了刚说明的int型指针pa。
  1. 指针变量使用时的注意事项
// 一般写法 
int a=10 ;  
int *pa = &a;  //  此时的* 不是*运算符,在此只是一个修饰作用 , 修饰pa 是一个int 类型的指针变量
// 应该把 (int *)  看做一个整体 , 是整型指针 

// 精简写法 
int a=10,*pa = &a; //  此时的* 不是*运算符,在此只是一个修饰作用 , 修饰pa 是一个int 类型的指针变量

// 相同类型的变量 和相同类型的指针变量运算才有意义, 
// 不同类型的变量和指针变量不能运算, 如果强制运算可能会引发错误 
// 要想实现不同类型的指针和变量运算, 需要使用强制类型转换 
    int x = 10 ; 
    float *px = &x;  // 错误用法 
  1. 实例72

    • 通过指针访问整形变量。
    • 要求: 先定义2个整型变量,再定义2个指针变量,分别指向这两个整型变量,通过访问指针变量,可以找到它们所指向的变量,从而得到这些变量的值。
    • 源文件
    01-cbase\72-pointer.c
    
    • 源代码
    #include <stdio.h> 
    
    int main(int argc, char const *argv[])
    {
    
        int x = 10   , y = 20 ;  // 整型变量 
        int *px , *py ;  // 整型指针变量,  定义px 和py 指针变量 
        px = &x;  
        py = &y; 
        int **ppx  = &px ; // 保存一级指针变量的地址的时候, 需要使用二级指针变量, 以此类推
    
        x = 15; // 直接访问 
        printf("x=%d\n",x); 
    
        *px = 16; // 间接访问 , 通过指针变量来访问 
        printf("x=%d\n",x); 
    
        printf("&x = %p\n",&x); // 获取x的地址
        printf("px = %p\n",px); // 获取px的值 
    
        printf("&y = %p\n",&y); // 获取x的地址 
        printf("py = %p\n",py); // 获取px的值 
    
        printf("*px=%d\n",*px); // 取pa指向(保存)的地址中的值    间接访问 , 通过指针变量来访问 
        printf("*py=%d\n",*py); // 取pa指向(保存)的地址中的值    间接访问 , 通过指针变量来访问 
    
        printf("&px = %p\n",&px); // py 是一个变量, 也有地址 
        printf("&py = %p\n",&py); // py 是一个变量, 也有地址 
    
        return 0;
    }
    
    • ​ 运行结果
    x=15
    x=16
    &x = 000000000061FE14
    px = 000000000061FE14
    &y = 000000000061FE10
    py = 000000000061FE10
    *px=16
    *py=20
    &px = 000000000061FE08
    &py = 000000000061FE00
    
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到