int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1); //这里的+1是加的数组a的尺寸,即sizeof(a)=5 * sizeof(int)
// 所以本语句最后ptr赋值的结果是 &(a[0]) +5 ,=(int *)a+5
printf("%d,%d",*(a+1),*(ptr-1));// 本句中 *(a+1)等效为 *( (int *)( &(a[0]) ) +1), 即a[1]
// *(ptr-1)等效为*( (int *)a+5 -1 ), 即*((int *)a+4),即a[4]
所以输出为 printf("%d,%d",a[1],a[4])的结果"2,5"
如果不改变最后一句双引号的位置,输出的为两个随机数
回复
我要赚赏金打赏帖 |
|
|---|---|
| PCF8574功能模块及其使用被打赏¥20元 | |
| 传感器LSM6DSO及LIS3MDL的功能检测被打赏¥18元 | |
| LPS25HB气压传感器及其检测被打赏¥18元 | |
| HTS221温湿度传感器及其检测被打赏¥18元 | |
| 【S32K3XX】HSE FW 版本更新被打赏¥21元 | |
| 基于ArduinoUNO开发板的AT24C02读写测试被打赏¥16元 | |
| TCS3472S传感器及其色彩检测被打赏¥19元 | |
| 【S32DS】S32K3 RTD7.0.1 HSE 组件配置报错问题解决被打赏¥27元 | |
| 【S32K3XX】MCME 启动 CORE1被打赏¥23元 | |
| AG32VH407下温度大气压传感器及其检测被打赏¥20元 | |
我要赚赏金
