这是什么意思
#include<stdio.h>main()
{
int a={1,2,3,4,5},*p=(int *)(&a+1);
printf("%d",*(p-1));}
这个程序*p=(int *)(&a+1);这句什么意思?
int *p;
p =(强转成int型指针) (a的地址+1) ba21 发表于 2020-5-12 22:41
int *p;
p =(强转成int型指针) (a的地址+1)
定义了int型数组a为什么a+1的地址还要强制转换? int *p = (int *)(&a+1) :
就是你定义了一个int 型的指针,而且把这个指针指向了 &a+1 的地址,这个(int *)的意思是将(&a+1)强制转换成一个int 型的指针,这样的话,前面也就可以理解成:指针p指向了另一个指针(*int)(&a+1)
上面的代码还可以写成这样:
int*p = &a+1;
后面你输出的那个*(p-1) == *(&a+1-1) == *(&a),所以输出结果为:5 鱼京 发表于 2020-5-13 10:21
int *p = (int *)(&a+1) :
就是你定义了一个int 型的指针,而且把这个指针指向了 &a+1 的地址,这个(int...
我想知道,定义的a数组已经是int型的,为什么不能把&a+1的地址直接赋给p,而要强制转换。 Zichenya 发表于 2020-5-13 10:17
定义了int型数组a为什么a+1的地址还要强制转换?
那你说 说你的理由,为什么不要强转? 这题目在哪本书看到的?
页:
[1]