#include <stdio.h>
#include <stdlib.h>
void main()
{
char in[6] = {0X24, 0X25, 0X22, 0X55, 0X32, 0X27};
char* out=NULL;
char* out1=NULL;
out = in; //把数组首地址给out指针
out1=&in[0];
//其实in和 &in结果都是数组的首地址,但他们的类型是不一样。
//in表示&in[0],也即对数组首元素取地址,in+1表示首地址+sizeof(元素类型)。
//&in虽然值为数组首元素地址,但类型为:类型 (*)[数组元素个数],所以&in+1大小为:首地址+sizeof(in)。
printf("The Address of in: %p\n", in);
printf("The Address of in: %p\n", &in);
printf("The Address of in: %p\n", out1);
// in和&in指向的是同一块地址,但他们+1后的效果不同,in+1是一个元素的内存大小(增加4),
// 而&in+1增加的是整个数组的内存大小(增加40)。既in和&in的指向和&in[0]是相同的,但性质不同!
printf("The Address of in: %p\n", in+1);
printf("The Address of in: %p\n\n", &in+1);
printf("in :0x%2x\n", *out);
printf("in :0x%2x\n", *(out+1));
printf("in :0x%2x\n\n", *out+1);
printf("in : 0X%2x\n", out[0]);
printf("in :0X%2x\n", out[1]);
printf("in :0X%2x\n", out[2]);
printf("in :0X%2x\n", out[3]);
printf("in :0X%2x\n", out[4]);
printf("in :0X%2x\n", out[5]);
}
#include <stdlib.h>
void main()
{
char in[6] = {0X24, 0X25, 0X22, 0X55, 0X32, 0X27};
char* out=NULL;
char* out1=NULL;
out = in; //把数组首地址给out指针
out1=&in[0];
//其实in和 &in结果都是数组的首地址,但他们的类型是不一样。
//in表示&in[0],也即对数组首元素取地址,in+1表示首地址+sizeof(元素类型)。
//&in虽然值为数组首元素地址,但类型为:类型 (*)[数组元素个数],所以&in+1大小为:首地址+sizeof(in)。
printf("The Address of in: %p\n", in);
printf("The Address of in: %p\n", &in);
printf("The Address of in: %p\n", out1);
// in和&in指向的是同一块地址,但他们+1后的效果不同,in+1是一个元素的内存大小(增加4),
// 而&in+1增加的是整个数组的内存大小(增加40)。既in和&in的指向和&in[0]是相同的,但性质不同!
printf("The Address of in: %p\n", in+1);
printf("The Address of in: %p\n\n", &in+1);
printf("in :0x%2x\n", *out);
printf("in :0x%2x\n", *(out+1));
printf("in :0x%2x\n\n", *out+1);
printf("in : 0X%2x\n", out[0]);
printf("in :0X%2x\n", out[1]);
printf("in :0X%2x\n", out[2]);
printf("in :0X%2x\n", out[3]);
printf("in :0X%2x\n", out[4]);
printf("in :0X%2x\n", out[5]);
}