博客
关于我
re学习记录从入门到入狱【15】
阅读量:151 次
发布时间:2019-02-28

本文共 1201 字,大约阅读时间需要 4 分钟。

指针数组与数组指针深入解析

指针数组的定义

在C语言中,指针数组是一种特殊的数组类型,其每个成员都是指针。以下是指针数组的定义示例:

char* arr[10]; // 一个包含10个char*成员的指针数组

每个char*成员占4字节,因此整个数组的大小为40字节(10 × 4)。指针数组的每个成员可以存储另一个指针,指向字符、字符串或其他数据结构的地址。

指针数组的赋值

可以通过两种方式赋值给指针数组:

  • 直接赋值

    int main() {    char* a = "Hello";    char* b = "Cracker";    char* arr[2] = {a, b};}

    编译器会将"Hello""Cracker"存储在常量区内存,并将这些地址赋值给arr数组中的成员。

  • 逐个赋值

    char* arr[2];arr[0] = a;arr[1] = b;
  • 初始化方式

    char* arr[2] = {"Hello", "Cracker"};
  • 需要注意的是,指针数组中的每个成员类型必须与初始化的值一致,否则会导致类型转换错误。

    结构体指针数组

    任何类型都可以定义为数组,包括结构体。以下是结构体指针数组的示例:

    struct Point {    int X;    int Y;};struct Point point; // 结构体变量struct Point arr[10]; // 结构体数组,包含10个结构体成员struct Point* pArr[10]; // 结构体指针数组,包含10个指针成员

    结构体数组的大小和每个成员的内存占用与普通数组相同,只是每个成员是一个结构体或结构体指针。

    数组指针的使用

    数组指针是一种特殊的指针类型,可以指向数组的首地址。以下是数组指针的定义与使用示例:

    int arr[] = {1, 2, 3, 4, 5};int(*pArr)[5] = &arr;printf("%d", (*pArr)[0]); // 输出1

    取用数组元素

    数组指针的使用步骤如下:

  • 定义数组指针

    int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};int(*pArr)[3] = &arr[0];
  • 访问数组元素

    printf("%d,%d", (*pArr)[0], (*pArr)[1]); // 输出1,2
  • 需要注意的是,数组指针的定义方式与普通数组不同,需使用&运算符获取数组的首地址,并在使用时减少指针的层级。

    注意事项

    • 数组指针的大小:数组指针的大小必须与数组的大小匹配,否则会导致内存越界或错误。
    • 数组的动态分配:可以使用malloccalloc动态分配数组内存,然后将指针赋值给数组指针变量。

    通过以上知识,可以更好地理解和使用指针数组与数组指针,灵活地进行内存操作和数据管理。

    转载地址:http://diwc.baihongyu.com/

    你可能感兴趣的文章
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>
    NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
    查看>>
    NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
    查看>>
    NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
    查看>>
    NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
    查看>>
    NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
    查看>>
    NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>
    NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
    查看>>
    NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
    查看>>
    NIH发布包含10600张CT图像数据库 为AI算法测试铺路
    查看>>