首页 > 其他分享 >教你如何清楚的分辨c语言各类指针类型定义

教你如何清楚的分辨c语言各类指针类型定义

时间:2024-11-13 17:17:09浏览次数:3  
标签:pp 指向 int 类型定义 test printf 分辨 指针

     可以这样说,学好了指针,就代表你学好了c语言。c语言中,通过合理的利用指针,可以快速高效的实现各种底层逻辑。下面陈列c语言中的各类指针定义,让大家分辨其中的具体意义。

1,指针变量

    我们定义一个指针变量p,指向整形变量i。

#include <stdio.h>

int main() {

    int i = 0;
    int *p = &i; //定义一个指向整形的指针变量p

    printf("the pointer *p value is %d", *p);
    return 0;
}

    运行结果如下:

2,指针数组

#include <stdio.h>

int main() {

    int a[] = {1,2,3,4,5};
    int *p[3]; //定义指针数组,它有n个指向整型数据的指针元素组成。
    p[0] = &a[0];
    p[1] = &a[1];
    p[2] = &a[2];

    for(int i=0;i<3;i++){
        printf("the pointer array element %d is %d\n", i,*(p[i]));
    }

    return 0;
}

    数组p中,存在3个元素,每个元素都是一个整形的指针,我们通过指向数组a的前三个元素地址,运行程序可以得到如下信息:

3,数组指针

#include <stdio.h>

int main() {

    int a[][3] = {{1,2,3},{4,5,6}};
    int (*p)[3]; //p为指向包含3个元素的一维数组的指针变量。
    p = &a[0][0];

    for(int i=0;i<2;i++){
        for(int j=0;j<3;j++){
            printf("the pointer array element is %d\n", *(*(p+i)+j));
        }

    }

    return 0;
}

    我们首先定义一个二维数组a,再定义一个指向一维数组的指针p(在这里我们可以看出,多一个括号指针的意义就完全不同了)。我们首先让p指向二维数组a的首地址,我们让p加1,p将指向a[1][0]的地址。

4,返回指针的函数

#include <stdio.h>

int *test(int *a);//test为返回一个整型指针的函数

int *test(int *a){
    return a;
}

int main() {

    int a = 8;
    int *b = test(&a);
    printf("the value of function test is %d", *b);

    return 0;
}

    我们声明了一个函数test,它返回一个整形指针,主函数中我们传输整型a的地址,让指针b获取函数返回的指针。

5,函数指针

#include <stdio.h>

int test(int a);

int test(int a){
    return a;
}

int main() {

    int a = 8;
    int (*pf)(int);//pf为一个函数指针,该函数返回一个整型值。
    pf = test;
    int b = pf(a);
    printf("the value of function test is %d", b);

    return 0;
}

    我们定义一个函数指针pf,让pf指向函数test,通过调用pf(a),实现函数运行,最终返回值我们通过变量b获取。

6,指向指针的指针

#include <stdio.h>

int main() {

    int a = 100;
    int *p = &a;
    int **pp = &p; //pp为指向指针的指针变量,它指向指针变量p

    printf("the a address is %d\n", &a);
    printf("the p store value is %d\n", p);
    printf("the p address is %d\n", &p);
    printf("the pp store values is %d\n", pp);
    printf("the *p value is %d, the **pp values is %d", *p, **pp);


    return 0;
}

    我们定义了一个指向指针的指针变量pp,我们可以看出pp存储的是指针p的地址,而p存储的是整型变量a的地址,所以*pp代表指针p的地址值,**pp代表变量a的值。

标签:pp,指向,int,类型定义,test,printf,分辨,指针
From: https://blog.csdn.net/tpc4289/article/details/143746269

相关文章

  • C++函数传递引用或指针
    常见变量用法下面通过例子分别展示传递值、字符串、数组的用法示例代码#include<iostream>#include<string>//函数接受一个整数的引用和一个整数的指针voidmodifyValue(int&refValue,int*ptrValue){refValue=100;//通过引用修改值std::cout......
  • 指针加法中的隐形偏差:一次不该有的偏移踩坑
    在最近的开发中,有这样的一个需求,给一个结构体,我需要传出这个结构体的个别成员的地址,offsetof这个宏函数可以很好的解决这个业务需求,但是我还是踩坑了。下面看看我的踩坑记录。我们知道一个(TInfoRom*)infoRom类型的结构体指针,他指向当前结构体变量的首地址。我们可以通过off......
  • C语言指针详解:用法与实例
    目录C语言指针详解:用法与实例引言1.指针基础1.1什么是指针?1.2如何声明指针?1.3获取变量的地址1.4解引用指针2.指针的高级用法2.1指针和数组2.2指针和函数参数2.3指针和动态内存分配3.指针的注意事项3.1空指针3.2悬空指针3.3指针运算C语言指针详......
  • 数组指针与指针数组
    一、指针数组指针数组是一个数组,其中每个元素都是一个指针。这种数组可以用来存储多个指针,每个指针可以指向不同的数据类型。#include<iostream>usingnamespacestd;intmain(){inta=10,b=20,c=30;int*ptr_array[3];//定义一个指针数组,包含3个......
  • 【数据分享】2000-2023年我国1km分辨率的逐日O3栅格数据
    空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2000-2023年全国范围逐日的PM2.5栅格数据、2013-2023年全国范围逐日SO2栅格数据、2000-2023年全国范围逐日PM10栅格数据(均可查看之前的文章获悉详情)!本次我们给大家带来的是2000-2023年全国范围的逐日的O3栅......
  • 深⼊理解指针(5)[回调函数、qsort相关知识(qsort可用于各种类型变量的排序)】
     目录1.回调函数2.qsort相关知识(qsort可用于各种类型变量的排序)一   回调函数    1定义/作用:把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅......
  • C++笔记---智能指针
    1.什么是智能指针1.1 RALL设计思想RAII(ResourceAcquisitionIsInitialization,资源获取即初始化)是一种资源管理类的设计思想,广泛应用于C++等支持对象导向编程的语言中。它的核心思想是将资源的管理与对象的生命周期紧密绑定,通过在对象的构造函数中获取资源,并在析构函数中......
  • 高级语言调用C接口(一)基础类型与基础类型指针的对应关系
    基础类型C变量类型Java变量类型C#变量类型python变量类型arkts变量类型备注intintintc_intnumberunsignedintlonguintc_uintnumbershortshortshortc_shortnumberunsignedshortintushortc_ushortnumberlongintintc_longnumber32位系统中,C中的long型占4字节,可以当作in......
  • This指针,static(静态成员)
    一、this指针    一个对象由属性(数据)和行为(函数)组成。    每个对象都只存储了自己的数据成员,并没有保存函数。例如,sizeof(d1)==4;    成员函数存储于.text(代码段),只保存一份,则同类型的对象共用。this的类型为:类名*const(例如:Demo*const)问题......
  • 【编程语言】理解C/C++当中的指针
    指针是C/C++语言中一个非常强大且重要的概念,也是编写高效程序的基础之一。对于没有编程背景的初学者来说,理解指针可能有些难度,但通过本篇文章的介绍,相信你会对指针有一个清晰的认识。本文将从指针的基本概念、作用、代码示例、注意事项等方面,带你一步步了解指针的世界。什......