コードの一部を見てください:
する#include <stdio.hに> する#include <STDLIB.H> INTメイン(ボイド) { INT [ 5 ] = { 1、2、3、4、5 }。 printf(" %d個、%D \ n "、& )。 printf(" %d個、%D \ n "、+ 1、および+ 1 )。 printf(" %D \ n "、はsizeof A)。 printf(" %d個\ N "、はsizeof &); printf(" %D \ n "、*(+ 1 ))。 printf(" %dの\ n "、*((INT *)(&+ 1) - 1 ))。 システム(「一時停止」)。 リターン 0 ; }
結果は以下の通りでした:
それは見ることができるとと同じブロックアドレスをポイントし、しかし+1後にそれらの異なる効果、+ 1(4の増加)要素のメモリサイズであり、&+ 1は、アレイ全体のメモリサイズを増大させること(増大20)。そして、両方のAと&ポイント&[0]は同じです!
しかし、なぜこのような状況はありますか?