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

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

typedef int (MyarrayType)[5];
MyarrayType myArray;

==》    int myArray[5];

定义数组类型

/**
myArray.c
**/
#include<stdio.h>

int main()
{
    typedef int (MyArrayType)[5];
    MyArrayType myArray;
    
    int i;
    for(i = 0; i < 5; i++)
    {
        myArray[i] = i + 1;
    }
    
    for(i = 0; i < 5; i++)
    {
        printf("%d ",myArray[i]);
    }
    return 0;
}

数组指针  用一个指针变量指向一个数组

方法1:定义数组指针变量的方法—用(数组类型 *) 定义

/**
pArray.c
**/
#include<stdio.h>

int main()
{
    typedef int (MyArrayType)[5];    //定义了一个数据类型 
    MyArrayType myArray;            //int myArray[5] 用类型定义变量 
    
    MyArrayType *pArray;            //定义了一个指针变量,这个指针变量指向了一个数组 
    
    int myArray2[5];        //相当于一级指针 
    for(int i = 0; i < 5; i++)
    {
        myArray2[i] = i + 1;
    }
    
    pArray = &myArray2;        //相当于二级指针 
      
    for(int i = 0; i < 5; i++)
    {
        printf("%d ",(*pArray)[i]);
    }
    return 0;
}

方法2:直接声明数组类型指针

#include<stdio.h>

int main()
{
    //定义声明一个数组指针类型    
    typedef int (*PArrayType)[5];
    PArrayType pArray;    //告诉编译器 给我分配一个指针变量
    
    int c[5];
    
    pArray = &c;
    
    for(int i = 0; i < 5; i++)
    {
        (*pArray)[i] = i + 1;
    } 
     
    for(int i = 0; i < 5; i++)
    {
        printf("%d ",(*pArray)[i]);
    } 
    return 0;
}

定义数组指针变量的第三中方法:

前两种方法通过类型定义变量

#include<stdio.h>

int main()
{
    int (*pMyArray)[5];        //直接定义一个指向数组的数组指针变量
    
    int c[5];
    pMyArray = &c;
    
    for(int i = 0; i < 5; i++)
    {
        (*pMyArray)[i] = i + 1;
    }
    
    for(int i = 0; i < 5; i++)
    {
        printf("%d ",(*pMyArray)[i]);
    }
}