ポインターについて質問です。私は概念を理解し始めていますが、このコードの特定の部分はその理解を脅かしているので、それを明確にしたいだけです.
行「B」に注意してください。 printf("ptr + %d = %d\n",i, *ptr++); /*<--- B*/
*ptrが に初期化された&my_array[0]ので、*ptr++(「 に格納されているアドレスにあるものは何でもptr、それに 1 を追加する」と解釈されます) は、 の値である 23 を出力するという印象を受けましたmy_array[1]。
それでも、 である の値を出力しmy_array[0]ます1。
アドレス自体に追加するかどうか (1004 が 1005 になるなど) について混乱して++おり、整数は約 4 バイトのスペースを占めるmy_array[0]ため、(値 1 がアドレスは 1001、1002、1003、1004 であり、my_array[0]1001 から始まり 1002 までしか上がらないため、*ptr++それでも ) が出力されますmy_array[0]。これは1)...
また...
かどうか*ptr++はmy_array[0](これは*ptr) からmy_array[1] *ptr++になります。これは私が最初に考えたものです。
基本的に、*ptr++特にこのプログラムに何をするのか説明してください。私が5歳のときのように説明してください。
本当に感謝しています。コードは次のとおりです。
#include <stdio.h>
int my_array[] = { 1, 23, 17, 4, -5, 100 };
int *ptr;
int main(void)
{
int i;
ptr = &my_array[0]; /* point our pointer to the first
element of the array */
printf("\n\n");
for (i = 0; i < 6; i++)
{
printf("my_array[%d] = %d ", i, my_array[i]); /*<-- A */
printf("ptr + %d = %d\n", i, *ptr++); /*<--- B*/
}
return 0;
}