我还是无法理解为什么(int)a这个表达式是取得一个字节,而不能看成是一个强制转换呢?
追答a本身是一个指针,但在这里你把它转换成了一个整形值了,所以在这里a+1就是a+1,是按照整形的加法进行的,但是指针的加法是在你加的数字基础上再乘上指针指向的类型所占的字节,就是n*sizeof(T)。
本回答被网友采纳如果输出是2,程序是这样写的int *p=(int *)(a+1);我看了下(int)a+1指向的是a【0】的第二个字节的地址,这个我就不能理解了
追答a[0]不是只有一个字节吗,
追问int4字节啊大哥
追答多谢指教
int a={1,2,3,4}; int *p=(int *)((int)a+1); P指向了什么?_百度...
1. int a = {}; 貌似应该是int a[] = {};2. "(int)a",已经把a的地址强转成int型数字(32bit),所以“((int)a+1); ”实际指向了整个数组内存块的第二个地址,即a[0]的第二个字节。3.这种用法比较危险,特别是在某些特殊处理器上,如果对32bit(int)变量的访问,访问地址不是4...
...{1,2, 3, 4,5}; int *ptr2 = (int*)((int)a +1); 下面那一句是什么意...
翻译一下:int *ptr2 = ***;声明一个整形指针指向某个地址;这个地址是:(int*)((int)a+1);(int)a,a是数组名,也是数组首地址,一般是32为的某一个数值,比如说 a =0x12345678,(int)a将a转换成整型值,0x12345678,然后将这个数值加1,变成0x12345679,然后再将其转换成地址,兜了一大...
int a[]={1,2,3,4,5}; int *p=a; printf("%d\\n",*p); 为什么结果是1呢...
(*P)++先复制=0;(++p)中++p自加1,变为坐标为1的元素,a[1]=*(++p)=2;p此时也指向a[1]的,*p=2;
int *ptr=(int *)(&a+1)
(int*)(&a+1)把这个相邻地址显式类型转换为int类型的地址int*ptr=(int*)(&a+1);所以ptr指向&a[5],并且ptr是一个int类型的指针。ptr-1=ptr-sizeof(int),故ptr-1指向&a[4]。因此,*(ptr-1)的值即为a[4]=5。
int a[5]={1,2,3,4,5}; int * ptr=(int *)(&a+1); 那个&a+1是哪个的...
int a[5]; 一个带有5个int空间的数组a &a 是指变量a的地址 &a + 1 表示的是 跳过一个“a[5]"大小的空间后的地址,即:a[5]的最后一个元素的后面
int a[]={1,2,3,4,5,6},int *p=a; 对p赋值的是数组a的第一个元素值还 ...
对p赋值的是数组a的 始地址,也就是 &a[0], 不是元素值。输出有2种方法:include <stdio.h> include <stdlib.h> main(){ int a[]={1,2,3,4,5,6};int *p=a;int i,n;n = sizeof(a)\/sizeof(int);for (i=0;i< n ;i++) printf("%d ", p[i]); \/\/输出 printf("\\...
int a[ ]={1,2,3,4};*P=a;则值为3时的表达式是A)P+=2;*(P++);B)P+...
选 A。p+=2是使指针指向第三个数据;*(p++)是先使用*p再使p的值加一;*++p则先使p加一,在使用*p,此时的值是4.
int a[]={1,2,3,4}, y, *p=a;执行y = (*++p)--;之后, a的值变为...
a 变 1,1,3,4 (*++p) 是前缀加,p要先增1, 初始化 p 指向 a[0], 增1, 指向 a[1],(*++p) 就是 a[1] 的值 a[1] -- 是 a[1] 的值 自减 1, 所以 a[1] 变 1。结果 a 数组 的 值 变 1,1,3,4 ...
int a[5]={1,2,3,4,5}; int * ptr=(int *)(&a+1); 那个&a+1是哪个的...
int a[5];一个带有5个int空间的数组a &a 是指变量a的地址 &a + 1 表示的是 跳过一个“a[5]"大小的空间后的地址,即:a[5]的最后一个元素的后面
...{ int a[5]={1,2,3,4,5}; int *p=(int *)(&a+1); printf("%d\\n",p...
int *p=(int *)(&a+1);对于a[5]来说a是该数组的首地址,而&a是该数组的行地址,虽然值是一样,但意义不同,而&a+1则表示该数组存储单元的后一个地址,a+1表示数组的第二个元素的地址。p[-1]表示p所在地址减一的地址下的值,也就是a[4]的值 ...