数组类型和多维数组本质-2:数组指针类型

怎样定义一个指针,指向一个数组?

1、用数组类型加 * 定义数组指针

代码1:

#include <stdio.h>

int main()

{

    int i=0;

    typedef int (MYARR5)[5];//抽象出数组类型


    MYARR5 array;  // 用数组类型定义变量

    MYARR5 *parray;// 用数组类型定义指针变量

    parray=&array;

    for(i=0;i<5;i++)

    {

        (*parray)[i]=i+1;  // 必须特别注意parray加星号*后,要加括号,防止与后面的中括号结合。不然会造成内存非法访问!

    }

    for(i=0;i<5;i++)

    {

        printf("array[%d]: %d \n ", i, (*parray)[i]);

    }

    return 0;

}


2、可以声明数组指针类型,用数组指针类型直接定义数组指针变量

代码:

#include <stdio.h>

int main()

{

    int i=0;

    //typedef int (MYARR5)[5];//抽象出数组类型

    typedef int (*PMYARR)[5];

    PMYARR parray; //编译器分配一个指针变量;

    int array[5];


    parray=&array;

    for(i=0;i<5;i++)

    {

        (*parray)[i]=i+1;  // 必须特别注意parray加星号*后,要加括号,防止与后面的中括号结合。不然会造成内存非法访问!

    }

    for(i=0;i<5;i++)

    {

        printf("array[%d]: %d \n ", i, (*parray)[i]);

    }


    return 0;

}

3、直接定义数组指针变量的方法:

前两种方法都是通过类型定义变量,比较麻烦。可以直接定义:int  (*parray)[5];

#include <stdio.h>

int main()

{

    int i=0;

    //typedef int (MYARR5)[5];//抽象出数组类型

    //typedef int (*PMYARR)[5];

    //PMYARR parray; //编译器分配一个指针变量;

    int (*parray)[5];//直接定义一个指向数组的数组指针变量。


    int array[5];


    parray=&array;

    for(i=0;i<5;i++)

    {

        (*parray)[i]=i+1;  // 必须特别注意parray加星号*后,要加括号,防止与后面的中括号结合。不然会造成内存非法访问!

    }

    for(i=0;i<5;i++)

    {

        printf("array[%d]: %d \n", i, (*parray)[i]);

    }

    return 0;

}


c语言中的比较难的语法:

数组类型,数组指针类型,数组指针变量

函数数据类型,使用函数数据类型定义函数类型变量函数数据类型的指针

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容