C语言:关于数组指针和指针数组的一点讨论

2018-05-04  本文已影响0人  李2牛
/*************************************************************************
* File Name: testArrayPointer.c
* Author: kent
* Mail: kent1411390610@gmail.com 
* Created Time: Thu May  3 19:59:11 2018
* Content: sizeof of ArrayPointer
 ************************************************************************/

#include<stdio.h>
int main(){
    int* a[5];
    int (*p)[5];
    int *pointer = NULL;
    printf("the size of (int*)arrayPointer[5] : %lu\n",sizeof(a));
    printf("the size of (*p)[5] : %lu\n",sizeof((*p)));
    printf("the size of a NULL pointer : %lu\n",sizeof(*pointer));
}

输出如下:


输出
  1. int* arrayPointer[5]
    指针数组,本质是数组,存的是指向整型元素的指针.64bit 机器指针大小为 8 字节.所以5*8 = 40
  2. int (*p)[5]
    数组指针,指的是数组名的指针,即数组首元素地址的指针。 即是指向数组的指针。 p为指向数组的指针,又称数组指针.数组每个元素为整型,所以 4*5 = 20

记住:
指针数组,本质是数组,存的是指针
数组指针,本质是指针,指向的是数组

上一篇 下一篇

猜你喜欢

热点阅读