ringa_lee
ポインター p が配列の i 番目の要素を指す場合、p+n、n+p、および p-n はそれぞれ i+n、i+n、および i-n 要素を指します。 ここで、p が指す要素は配列であるため、p+1 は配列内の次の配列を指します。これは、他の場合 (int を指す場合など) の動作と一致します。
注: コード内の cout 行には未定義の動作が含まれています。
には int array[10][20], (*p)[20] = array;
int array[10][20], (*p)[20] = array;
std::cout << p++; の出力は、std::cout << p; を出力する &array[0] と同じです。
std::cout << p++;
std::cout << p;
&array[0]
std::cout << ++p; の出力は、std::cout << p+1; を出力する &array[1] と同じです。
std::cout << ++p;
std::cout << p+1;
&array[1]
std::cout << p++; std::cout << ++p; は &array[0] と &array[2] を出力します。
std::cout << p++; std::cout << ++p;
&array[2]
std::cout << p++ << " " << ++p;未定義の動作が含まれており、プログラムの出力を推測できません。
std::cout << p++ << " " << ++p;
ポインター p が配列の i 番目の要素を指す場合、p+n、n+p、および p-n はそれぞれ i+n、i+n、および i-n 要素を指します。
ここで、p が指す要素は配列であるため、p+1 は配列内の次の配列を指します。これは、他の場合 (int を指す場合など) の動作と一致します。
注: コード内の cout 行には未定義の動作が含まれています。
を参照してください。には
がありますint array[10][20], (*p)[20] = array;
std::cout << p++;
の出力は、std::cout << p;
を出力する&array[0]
と同じです。std::cout << ++p;
の出力は、std::cout << p+1;
を出力する&array[1]
と同じです。std::cout << p++; std::cout << ++p;
は&array[0]
と&array[2]
を出力します。std::cout << p++ << " " << ++p;
未定義の動作が含まれており、プログラムの出力を推測できません。