其中的 int *pa0 = (int *) &a[0]; int *pa4 = (int *) &a[4];是什么意思?

#include <stdio.h>

int main() {
char a[20] = { '\0' };
int *ptr = (int *) a;
ptr++;

printf("a = %p, ptr-1 = %p, ptr = %p\n", a, ptr - 1, ptr);

void *p = a;
p++;

printf("a = %p, ptr-1 = %p, ptr = %p\n", a, p - 1, p);

int *pa0 = (int *) &a[0];
int *pa4 = (int *) &a[4];
int s1 = pa4 - pa0;

int *pa3 = (int *) &a[3];
int *pa5 = (int *) &a[5];
int s2 = pa3 - pa0;
int s3 = pa5 - pa0;

printf("s1 = %d, s2 = %d, s3 = %d\n", s1, s2, s3);
}

一个int是4个字节,一个char是一个字节intb=*((int*)a);//这个赋值就是把数组a的地址当作一个int的地址,那么这个数组4个字节的内容就形成了一个int:0x000x000x000x01,intel内存体系是低位在前那这个值就是0x01000000,换算成10进制就是16777216你说的怎么才能从unsignedchar[4]正确的转换为一个int的值,这个说的很模糊,按你的预期是要转换成什么值呢追问

我顶你个肺你说的是什么狗屎,,,,老奸

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-08-06
给指针赋值啊,括号是为了改变运算顺序,由于优先级不同,所以只能这样做
相似回答