首页 > 其他分享 >指针的相关知识

指针的相关知识

时间:2024-06-30 22:56:21浏览次数:3  
标签:10 int 知识 数据类型 数组 printf 相关 指针

1.行指针

  行指针  是一个指针, 指向的元素是一维数组。
        
存储行地址的指针变量,叫做行指针变量。形式如下:
        
         存储类型   数据类型   (*指针变量名)[表达式:列数] ; 
      
例如,int a[2][4];  
     int (*p)[4];    

eg:
    int a[3][3] = {1,2,3,
                   4,5,6,
                   7,8,9};


    int (*p)[3] = &a[0];
    int (*p)[3] = a;

    int (*p)[3] = &a[1];
    

2.行指针与二维数组

int a[3][3] = {1,2,3,
                   4,5,6,
                   7,8,9};

    int (*p)[3] = a;    // int (*p)[3] = &a[0];    

    p[1][2]    ==  (*(p + 1))[2]    ==   *(*(p + 1) + 2) 
             

遍历二维数组:
      int a[3][4] = {1,2,3,4,
                     5,6,7,8,
                     9,10,11,12};

      int (*p)[4] = a;    // int (*p)[4] = &a[0];

      int i,j;
      for(i = 0; i < 3; i++)
      {
          for(j = 0; j < 4; j++)
          {
              printf("%d\t", p[i][j]);    //*(*(p + i) + j)    (*(p + i))[j]
          }
          puts("");
      }       

3.行指针与一维数组

    int a[5] = {1,2,3,4,5};


    int (*p)[5] = &a;

    int i;
    for(i = 0; i < 5; i++)
    {
        printf("%d\n", (*p)[i]);    *((*p) + i)     p[0][i]
    }
    

    p[0][i] ==  (*(p+0))[i]   == *(*(p + 0) + i)        

4.指针数组

所谓指针数组是指由若干个具有相同存储类型和数据类型的指针变量构成的集合。
    是一个数组,元素是一个一个的指针。    
        
        
指针变量数组的一般说明形式: 
          存储类型  数据类型  *指针变量数组名[大小]; 
                 int *a[3];  

//指针数组名就表示该指针数组的存储首地址,即指针数组名为数组的指针。
    
    
1.初始化
    
        int a = 10, b = 20, c = 30;
        int *p[3] = {&a, &b, &c}; 


        printf("%d\n", *p[0]);

2.赋值
        int a = 10, b = 20, c = 30;
        int *p[3];
        p[0] = &a;
        p[1] = &b;
        p[2] = &c;
        
        int d = 100;
        p[2] = &d;

5.特殊的指针

1.野指针: 指针指向不明确,被称为野指针。 野指针一旦使用就段错误。
          int *p;        


2.空指针: 指针指向 NULL (零地址)。  空指针一旦使用就段错误。
          int *p = NULL;


3.空类型指针(万能指针):可以指向任意类型的地址  
            void *p;
  注意:万能指针使用前必须强制转换为对应数据类型的指针 
      
  eg:
            int a = 10;
            void *p = &a; 
            
            printf("%d\n", (int *)p);


4.二级指针/多级指针
    指向指针的指针就是二级指针
    
    int a = 10;
    int *p = &a;

    int **p = &p;

标签:10,int,知识,数据类型,数组,printf,相关,指针
From: https://blog.csdn.net/m0_49236682/article/details/139939874

相关文章

  • 知识图谱导论复习提纲
    KG1.知识图谱的定义以及知识图谱的特点?定义知识图谱就是一种用于表示知识的图结构模型,其中节点表示实体,边表示实体之间的关系,它以图的形式将知识组织起来,通过节点和边的连接,形成一个结构化的知识表示系统。特点结构化表示:知识图谱将知识以三元组的形式进行结构化表示,使得知......
  • 关于函数指针和结构体一起的用法
    想到单片机中的中断处理不好多样化,一直通过函数指针传递,今天想通过函数指针实现多样化,在中断中放一个要执行的函数指针,在外面可以改变此指针指向的函数。配合结构体的使用,感受到面向对象中class的存在了。typedefint(*pFunc)(int);//定义一个函数指针类型intadd(inta){......
  • 二、常量指针与指针常量
    一、常量指针:又叫常指针,可以理解为常量的指针,即也是指针,指向的是个常量(指向的对象是常量)。指针变量可以修改,但是不能通过指针来修改其指向的对象。代码形式:intconst*p;constint*p;举例:1#include<stdio.h>23intmain()4{5inta=10;6const......
  • 第二章 MATLAB入门知识 第三节
    常见的特殊变量:特殊变量描述ans系统默认的用于保存运算结果的变量名pi圆周率π>>pi ans=3.1426inf/-inf无穷大和负无穷大,注意1/0=inf正常0不能做分母但是MATLAB可以NaN不定值或缺失值。例如计算0/0或0*Inf会返回NaNi和j负数中的虚数单位,例如3+4i和3......
  • 第二章 MATLAB入门知识 第二节
    MATLAB的帮助系统【以sum函数为例】方法1:Documentation-MATLAB&Simulink-MathWorks中国方法2:使用doc命令>>docsum方法3:使用help命令>>helpsum方法4:使用edit命令>>editsum小技巧:代码中%开头的语句是MATLAB的注释信息,在运行代码时注释信息不会被执行。MATLAB......
  • python 列表相关操作
    访问元素index(x):返回列表中第一个值为x的元素的索引。pythonfruits=['apple','banana','cherry']print(fruits.index('banana'))#输出:1count(x):返回列表中值为x的元素的个数。pythonnumbers=[1,2,2,3,2,4]print(numbers.count(2))#输......
  • The this Pointer (this 指针) and An Array of Objects (对象数组)
    ThethisPointer[this指针]andAnArrayofObjects[对象数组]1.The`this`Pointer(`this`指针)2.AnArrayofObjects(对象数组)References1.ThethisPointer(this指针)classStock{private: doubletotal_val_; ...public: double......
  • git基本知识
    文件在本地仓库的状态常用命令:gitstatus查询状态gitadd添加到暂存区,可以使用通配符*gitcommitdesc:1提交到本地仓库,只能提交暂存区的文件,该次提交的描述gitcommit-a-mdesc:2表示直接提交,不用放到暂存区gitlog查看提交记录gitreset--soft1234......
  • 儿童过敏方面指南及相关资料
    数据格式:pdf数据内容:近几年儿童过敏治疗方面指南、专家共识及相关资料,适合医学生、儿科从业人员、家长等人员查阅。#儿科  #儿科医生  #儿科科普  #临床医学  #儿科学  #过敏  #过敏性鼻炎  #儿童过敏  #儿童过敏性鼻炎......
  • 关于VPX标准的相关解读
        VPX标准,全称为VITA46,是由VITA(VMEInternationalTradeAssociation,VME国际贸易协会)于2007年提出的新一代高速串行总线标准。该标准设计初衷是为了保护并延续VME总线的应用,同时面向更高端的需求,如高密度、高性能计算、更大的带宽、强化的电源管理以及在恶劣环境下的......