• C指针


    指针:指针是一个变量,用来存放内存地址的变量。

    两个有关的运算符:*号有两个作用

    1. &:取地址运算符。

    2. *:声明指针变量。

    3. *:取值运算符。对某个指针变量做*操作,表示取该指针指向地址中的值。

    C语言中提供了地址运算符&来表示变量的地址。其一般形式为:&变量名;
    如&a表示变量a的地址,&b表示变量b的地址。变量本身必须预先说明。

    指针存储内存地址,*获取该内存地址的值。通常指针都是存储别人的内存地址,*获取别人的值。

    1. &:取地址运算符

    int num = 10;

    int *ptr_num = &num  //声明指针变量

    2. *:声明指针变量

    int num = 10;

    int *ptr_num;  //声明指针变量

    ptr_num = &num //指针变量赋值。&是取地址运算符

    3. *:取值运算符,也称间接运算符

    间接运算符:通过内存地址,获取变量的值。

    int num = 10;

    int *ptr_num;  //声明指针变量

    ptr_num = &num //指针变量赋值。&是取地址运算符

    num = *ptr_num //对指针变量做*操作,表示取该指针指向地址中的值

    4. **:二级指针变量,指向指针的指针。指针指向另一个指针的内存地址。

    int a=10; // 定义一个int型变量a
    int *p; // 定义一个int类型的一级指针变量p
    int **t; // 定义一个int类型的二级指针变量t
    p = &a; // 使一级指针p指向变量a的地址
    t = &p; // 使二级指针t指向一级指针变量p的地址
    printf("%d", a); // 输出10
    printf("%d", *p); // 输出10
    printf("%d", **t); // 输出10

    5、指针和数组

    int main(){

    //数组名就是数组的首地址

    double score[] = {19,20,35,88,66};

    double *prt_score = score; //指针的声明和赋值。score是数组首地址。

    printf("数组的首地址:%p 数组首元素的地址:%p ",score,&score[0]);

    int size = sizeof(score) / sizeof(score[0]);

    for(int i = 0; i < size; i++){

    //printf("%.2lf ",ptr_score[i]);     //指针不会发生变化

    printf("%.2lf ",*(ptr_score + i));  //指针不会发生变化。通过取值运算符,获取数组的值。

    //printf("%.2lf ",*ptr_score++);  //指针发生变化。每运行一次指针加1,最后指针会指向最后元素。

    }

    }

    数组与指针小结

    数组名就是这块连续内存单元的首地址

    int num[50]; //num数组名,也是数组的首地址

    num的值与&num[0]的值是相同的

    数组第i+1个元素可表示为:

    第i+1个元素的地址:&num[i+1] 或 num+i

    第i+1个元素的值:num[i+1] 或 *(num+i) 或 *num++ (*num++:指针位置会改变)

    为指向数组的指针赋值(指针声明和赋值):

    int *ptr_num = num; 或者 int *ptr_num = &num[0];

    指针变量可以指向数组元素(指针声明和赋值):

    int *ptr_num = &num[4] 或者 int *ptr_num = num + 4

    指针自增或自减后,必须重置

    *num++;

    *num = num; //重置指针

  • 相关阅读:
    如何用Chrome浏览器下载网页音乐视频
    《C语言深度解剖》学习笔记之函数
    《C语言深度解剖》学习笔记之内存管理
    《C语言深度解剖》学习笔记之指针和数组
    《C语言深度解剖》学习笔记之预处理
    《C语言深度解剖》学习笔记之符号
    《C语言深度解剖》学习笔记之关键字
    CKA1.20版本2021年1月31日最新版本真题,第三题升级master节点
    CKA1.20版本2021年1月31日最新版本真题,第一题RBAC
    Linux之curl命令
  • 原文地址:https://www.cnblogs.com/chenweichu/p/6444689.html
Copyright © 2020-2023  润新知