一、作用不同:优先级的问题,[]的优先级高于*,这就是为什么后者加了一个(),int *p[5]定义一个指针数组p,讲到底这个p是一个数组,数组内的元素是5个指针,而数组内的每一个指针指向一个int型的变量;int (*p)[5]定义了一个指向5个元素的一维数组的指针。二、含义不同:第二个就是这个...
int *p[5]; 是指针数组, 有 5 个成员,每个成员都是一个指针,共有5 个指针 int (*p)[5]; 小括号优先,所以 是 1个指针,用来指向 有5个元素的数组。--- 一般来说 int (*p)[n]; 是数组指针(也称行指针)()优先级高,说明p是一个指针,指向一个整型的一维数组,这个一维数组...
不同的,一个是指向有5个元素的整型数组的指针。int (*p)[5],你用p++会发现,p指向的位置向后,移了4*5=20 个字节。跳过的是5个int那么长的长度。后面那个是指向整型的指针,int * p, p++,以后向后移了4个字节,跳过的是4个字节,刚好是一个整型。
int **p 定义一个指向指针的指针,具体意思是,该变量是用来存放另一个指向整型变量的指针变量地址的 int *p[5] 定义一个指针数组,用来存放5个指向整型变量的指针变量地址
相当于int *p[5]和int (*p)[5].区别是:前者int *[],是一个指针数组,加入中括号里面是5,那么就是说你所定义的这个数组里面的5个变量都是指针。就好比你定义int a[5]类似,这5个元素都是可以存放int值的变量。int *p[5]就是定义了5个元素,每一个元素都是指针,可以指向变量。也可以...
char* p[5 ]和char (*p)[5 ]无非是指针数组和数组指针的理解:1、先看char* p[ 5] 由于*是自右向左结合的,所以首先它是一个数组,然后是char*类型的,所以char* p[ ]是一个存放指针类型的数组(即:存放char类型变量的地址的数组);2、再看char (*p)[5 ] ,首先()的优先级比*高...
int a[] = {1,2,3,4,5,6}; 则int (*ptr) = a; int *p = a[0] 有什么区别 int (*ptr) 和int *p 本身是没有什么区别的,都是定义一个指针 只不过名字叫的不同而已,a表示数组的首地址,确切的说法应该是数组的第1个元素的地址,即在这里是a[0]的地址 .int *p = a[0]不能表达正确意思。
int (*ptr) 和int *p 本身是没有什么区别的,都是定义一个指针 只不过名字叫的不同而已,a表示数组的首地址,确切的说法应该是数组的第1个元素的地址,即在这里是a[0]的地址 .int *p = a[0]不能表达正确意思。 下面几个是等价的写法 int (*ptr)=a; //ptr指向第一个元素1 ...
(int*)5 是把 int 类型 5 强转成 (int *) 类型 并 赋值给 *p 相当于... p = 5; *p = NULL;printf("%d", p ); 结果应为5 printf("%d", *p); 结果应为 随机数.希望对您有帮助
int (*(*p5)(int*))[5];——p5是个指针,指向一个具有一个int *型形参的函数,这个函数返回一个指向具有5个int元素的数组的指针。