数组首地址给赋给 指针的问题

#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]);
       
              
}





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值