#include <stdio.h>
void f(char**);
int main() {
char *argv[] = { "ab", "cd", "ef", "gh", "ij", "kl" };
f(argv);
return 0;
}
void f(char **p) {
char *t;
t = (p += sizeof(int))[-1];
printf("%s\n", t);
}
これは私が持っているコードで、質問は出力を求めています。私はなぜ出力がghであるのだろうかと思っています。私は、sizeof(int)がcharの要素の数と等しく、これが "t"ステートメントに関して6から1を引いたものと仮定しました。私はsizeof(int)を印刷し、それは私に4を与えました。私はちょうどsizeof(int)が4でなく、なぜ6であるのかと混同しています。 ありがとうございます。 t = (p += sizeof(int))[-1];
ためこのコードの出力はなぜghですか?
'sizeof(int)はcharの要素の数と等しくなります。どうやってその結論に至ることができましたか? – John3136
ねえ、「argc」は何のためにあるのだろうか!!!! – paddy
私はそれが単なる文字列であれば "文字列"と言っていましたが、その文字列のサイズはバイト単位でしょうか?それから私はさらに探して、私は間違っているが、それは4バイトになりますcharのポインタのサイズを計算しているので4だろうか? – thrugs