当前位置: 首页 > article >正文

C基础(七) 指针和二维数组、数组指针

指针和二维数组

  1. 一级指针与二维数组:一级指针无法直接指向二维数组,原因是偏移量不一致,可操作空间不同。二维数组的数组名是行指针,指向一行元素;对二维数组的数组名取一次*,降维成列指针,指向单个元素的地址。例如int arr[2][3]arr是行指针,*arr是列指针,**arr是元素。
    #include <stdio.h>
    int main(int argc, const char *argv[])
    {
        int arr[2][3]={23,13,8,34,9,2};
        int arr1[4]={1,9,4,2};
        printf("arr=%p\tarr+1=%p\n",arr,arr+1);  //偏移量是12
        printf("arr1=%p\tarr1+1=%p\n",arr1,arr1+1); //偏移量是4
        int *p=arr;   //让int*类型的指针指向二维数组,因为偏移量不一致会报警告
        printf("p=%p\tp+1=%p\n",p,p+1);
        return 0;
    }

    数组指针

  2. 数组指针本质:本质是一个指针,作为指针的优先级更高。定义格式为:数据类型 (*变量名)[数组中元素的个数]。
  3. 与二维数组的关系:由于数组指针和二维数组的偏移量都是一整行元素,所以数组指针可以直接指向二维数组。
  4. 代码示例(部分)
    #include <stdio.h>
    int main(int argc, const char *argv[])
    {
        int *p;  //int
        char *p1; //char   
        float *p2; //float   
        double *p3; //double   
        printf("arr=%p\tarr+1=%p\n", arr, arr + 1);  // 偏移量是12  
      
        return 0;  
    }
    


http://www.kler.cn/a/536416.html

相关文章:

  • 智能门铃市场:开启智能家居新时代
  • 软考高级-软件系统架构师-02-软件工程(重点)
  • Three.js 实现海面效果
  • 作为高级测试工程师,如何用AI进行进一步提升?DeepSpeek的回答
  • GB/T28181 开源日记[8]:国标开发速知速会
  • 初窥强大,AI识别技术实现图像转文字(OCR技术)
  • 开源CodeGPT + DeepSeek-R1 是否可以替代商业付费代码辅助工具
  • Node.js 实现简单爬虫
  • RK3568平台开发系列讲解(ConfigFS篇)ConfigFS核心数据结构
  • jvm 篇
  • 匿名函数无法移除事件监听?
  • 使用 Python 编程语言来实现机器学习小项目教程案例
  • 《VB.net之沉淀》
  • springboot+vue导入ruoyi项目的框架
  • SpringBoot启动源码剖析:从入口到容器的诞生
  • 瞎想:控制论、信息论与系统论:未来汽车产品的“三论融合”与深度思考
  • Python3中异常处理:try-finally语句
  • Oracle CDB自动处理表空间不足脚本
  • Hackmyvm Atom
  • 【吾爱出品】 [Windows] 多线程下载器,Ghost Downloader v3.5.1
  • UnityShader学习笔记——动态效果
  • ubuntu20.04离线安装docker和docker-compose
  • 基于CLIP视觉语言大模型的行人重识别方法的简单框架设计
  • 【AI大模型】deepseek 相关资料和使用 【媲美 GPT-o1?】
  • 02.07 TCP服务器与客户端的搭建
  • 建筑兔零基础自学python记录13|实战人脸识别项目——灰度转换02