K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>本多さん: >>「&a」で取得できる「配列へのポインタ」って使い道ってあります? > >私の認識は、こっちに書いた通り。 > >http://kmaebashi.com/programmer/pointer.html >| 配列から読み換えられたポインタは左辺値を持たないため、 & 演算子の >| オペランドにはならないはずであるが、この例外規則のため、 & でアドレス >| (配列の先頭要素のアドレスではなく、配列全体のアドレス)が 取得できる。 >| この規則は初心者を混乱させることがある (例えば scanf("%s", buf) でなく、 >| scanf("%s", &buf)と書いても 正常に動いてしまう(正常に動いたように見えて >| しまう)が、 メリットは今ひとつわからない。 > >774RRさん: >>int a[10]; >>memset(&a, 0, sizeof a); >>配列だから &a にせずとも a とだけ書けば事足りるのだが、配列の場合だけ & 不要ってのは >>(単なる表記の問題ではあるが)初心者を惑わすもととなりうるんで。 > >strcpy(dest, src)とかでもdestに&は付きませんから、これは付けないほうが >むしろ統一が取れるのではないでしょうか。 > >>typedef int i10[10]; // これは .h ファイルにあって >>i10 a; memset(&a, 0, sizeof a); // こっちは .c ファイルにある >>の場合には & ありのほうが自然で、ないのは不自然。 > >MinGWのsetjmp.hより: >typedef _JBTYPE jmp_buf[_JBLEN]; > >でも、setjmp()を使うときは、 > >jmp_buf buf; > >if (setjmp(buf) == 0) { > ... > >なのであって、&は付けません。 >まあ、前から書いているように、私もこれって不自然だと思うんですが。 >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!