-3
は、strcmp
関数では、引数としてポインタ*s
と*t
をとるが、for
ループでは、条件として*はs [i]と等価ですか? K & R Cの106ページ
s[i]==t[i]
を指定します。
ジャスト機能文がs[i]
代わりの
*s
を使用することができ、したがって、同義である
*(s+i) and s[i]
として、配列のために、確認したいですか?
は、strcmp
関数では、引数としてポインタ*s
と*t
をとるが、for
ループでは、条件として*はs [i]と等価ですか? K & R Cの106ページ
s[i]==t[i]
を指定します。
ジャスト機能文がs[i]
代わりの
*s
を使用することができ、したがって、同義である
*(s+i) and s[i]
として、配列のために、確認したいですか?
は配列オブジェクトの要素の添字指定である。[]角括弧内の式が続く後のfi X式C標準(6.5.2.1配列は添字)
2から添え字演算子[]の定義は、E1 [E2]が (*((E1)+(E2))と同じであるということです)。 バイナリ+演算子に適用される変換規則のために、E1が配列オブジェクト(同等の場合、配列オブジェクトの最初の要素へのポインタ )で、E2が整数の場合、E1 [E2]はE2- E1の第1要素(0から数えて)。
したがって
a[i]
私はあなたが機能を詐称していると思います*(a + i)
に相当し、今度は例えばi[a]
と同等です
int a[1] = { 10 };
printf("a[0] == *(a + 0) is %s\n", a[0] == *(a + 0) ? "true" : "false");
printf("a[0] == 0[a] is %s\n", a[0] == 0[a] ? "true" : "false");
:それは取りません」ポインタ '* s'と' * t' "ではなく、ポインタ' s'と 't'を取ります。 –
'[]'ポーラーを簡単に検索するとこれに答えました。質問をする前に、あなた自身に解決しようとしてください。そして 's 'は' s [i] 'と同じであるべきです(' i'がゼロでない限り)? – Olaf
はい、有効なポインタ*または配列* 's'とインデックス' i'の式 '*(s + i)'は 's [i]'と等しくなります。これは、 '* s'が' s(i) 'と同じであることを意味します。' i'がゼロであれば***( '* s'は' *(s + 0) 'と同じです's [0]'とします)。 –