指针与数组的问题
int **p;int (*p);
int p[];
这三者的具体区别和表示含义分别是什么啊?越具体越好,谢谢各位鱼油。
{:5_92:}
本帖最后由 Croper 于 2019-3-22 20:36 编辑
int **p;//声明并定义一个指向整数的二级指针,或者说是一个指向(指向整数的指针)的指针。
//仅仅是一个指针,并且必须指向一个(指向整数的指针)或置空,除了指针占用的空间外,没有开辟额外的空间
int (*p); //声明并定义一个指向(大小为N的整数数组)的指针
//仅仅是一个指针,并且必须指向一个(大小为N的整数数组)或置空,除了指针占用的空间外,没有开辟额外的空间
int p[]; //声明并定义一个(大小为N的整数数组)的数组
//是一个数组,并且必须在定义时给出具体的值(这样才能推断空[]的大小),占用的空间为:sizeof(int)*N*数组大小
Croper 发表于 2019-3-22 20:29
算是有了更深入的认识了,多谢 本帖最后由 jackz007 于 2019-3-22 21:16 编辑
int ** p ; // 定义 p 为指向整型指针的指针,* p 内可以保存一个指向整型数的指针,** p 内可以保存一个整数;
int p[]; // 定义 p 为末维为 N 的二维数组,可以通过 p 访问和使用数组元素;
int (* p)[] ; // 定义 p 为指向一维数组的指针,使用方法稍微复杂一些,请看下面的实例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int a[] = {{1 , 2 , 3 , 4} , {5 , 6 , 7 , 8} , {9 , 10 , 11 , 12}} ;
int (* p) = a ; // 一维数组指针指向二维数组 a,注意,一维数组元素个数与被指向二维数组的末维一致
printf("%d , %d , %d\n" , p , p , p) ; // 可以像使用 a 那样使用 p
printf("\n") ;
}
页:
[1]