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

#include 
#include "stdlib.h"
#include "string.h"

int main(int argc, const char * argv[]) {
   
    /**指针数组
     *  数组:
     元素类型角度,数组是相同类型的变量的有序集合,测试指针变量的内存空间大小.
     内存的角度:连续的一大片内存空间
     */
    /**
     *  数组的初始化
     */
    int arr1[10] = {1,2};
    int arr2     = {1,3};
    int arr3[200]     = {0};//全部是0; 编译的时候,已经确定所有的值为零
    memset(arr3, 0, sizeof(arr3));//数组内存空间初始化  显示的重置内存块.
    
    /**
     *  1.数组首元素的地址和数组的地址  arr3 数组首元素的地址.
        &arr3 是整个数组的地址. &arr3+4 步长是200*4;
     */
    
    typedef int (MyArray)[5];//定义一个数组类型
    MyArray myArray;
    for (int i = 0; i<5; i++) {
        myArray[i] = i+1;
    }
    for (int i = 0; i<5; i++) {
        printf("%d",myArray[i]);
    }
    // insert code here...
    printf("\nHello, World!\n");
    
    
    /**
     *  数组指针  用一个指针指向数组
     */
    MyArray *pArray;//定义一个指针变量,这个指针变量指向一个数组
    
//    pArray = &myArray;
    int myArray2[5];
    pArray = &myArray2;//可以通过指针变量操作内存空间   相当于二级指针
    
    for (int i = 0; i<5; i++) {
//        myArray2[i] = i+1;
        (*pArray)[i] = i+1;
    }
    printf("数组指针\n");
    for (int i = 0; i<5; i++) {
        printf("%d",(*pArray)[i]);
    }
    printf("\n");
    
    /**
     *  定义一个数组指针变量的第二种方法
     */
    typedef int (*PArrayType)[5];//定义一个数组类型
    
    PArrayType pMyArray;//分配一个指针变量.
    
    int c[5];
    pMyArray = &c;
    
    /**
     *  开始通过指针变量操作内存空间
     */
    for (int i = 0; i<5;i++) {
        (*pMyArray)[i] = i+1*10;
    }
    printf("数组指针\n");
    for (int i = 0; i<5; i++) {
        printf("%d",(*pMyArray)[i]);
    }
    printf("\n");

    return 0;
}

你可能感兴趣的:(数组类型,数组指针,和数组指针类型变量)