ポインタ配列要素を横断するように1
INT ARR [] = { 11、22は、33であり、44は、55 }; int型 LEN = はsizeof(ARR)/ はsizeof(INT); // 配列長見つける チャーIを、 ため(私は= 0 ; I <LEN; I ++ ) { のprintf(" %のD "、*(ARR + I)); // *(ARR + I)は、ARRと等価である[I] }
int型です*編曲、各添加。1は、自身の値(アドレス)をARRときはsizeof(int)を増加します。
反復するために2配列の要素のポインタの方法
INT [] = {ARR 11。22、33、44、55 }。 INT LEN = はsizeof(ARR)/ はsizeof(INT)、* P =&ARR。 // 等价于* P =&ARR [0] チャーI。 以下のための(iは= 0 ; I <lenは、I ++ ) { のprintf(" %d個"、*(P + I))。 // *(P + I)等价于*(I + ARR) }
P、ARR、およびARR [0]と等価です
*(P + I)、*(ARR + I)、[I]、P [i]はARR等价
配列要素を介し増分オペレータにより3
名前は配列または配列のポインタであるかどうか、あなたはそれを除いて、配列の要素にアクセスするための二つの方法の上に使用することができます。配列名が一定である、彼の値を変更することはできません。配列ポインタが可変である(特に断りのない限り、それは一定です)、その値は変更することができます。換言すれば、配列名は、配列の先頭を指し示すことができ、及びポインタの配列は、第一の配列の先頭を指し、そして次に他の要素を指し示すことができます。
INT ARR [] = { 11。22は、33であり、44は、55 }; int型 LEN = はsizeof(ARR)/ はsizeof(INT)、* P =&ARR; // 相当* P =&ARR [0] チャーI。 用(私は= 0 ; I <lenは、I ++ ) { のprintf(" %のD "、* P ++); // * ++ P *(P ++)に相当 }
ARRは++にその値を変更する一方ARRは、一定であるため、* Pは++、++ * ARRを変更することはできません。
int型 * p =&編曲:[ 2 ]