Re: Array and pointer
小野@名古屋大学 です.
しまった.
<bqhkot$m9r$1@news511.nifty.com>の記事において
kounoike@mbh.nifty.comさんは書きました。
kounoike> で,OKと書いたのは,単に
kounoike> int hoge(char argv[][]);
kounoike> がコンパイルできたので単純にOKではと思った次第ですが,違うのかな。
「ISO C」が変わったんだった.
C89 (前のバージョン) ではアウトですが, C99 (新しいバージョン) で
はできるようになった... のかな? 規格を読んでもよくわからん.
T [] は imcomplete type だから, それを使った T [][] はアウトのよ
うな気がするんだが.... どうも使わないとエラーにならないようだ.
下に示す例では gcc でもエラーになるんだけど....
kounoike> > main の宣言として ISO C で規定されているのは
kounoike> 上の話は、mainに限った話ではないですよね。単に、関数の引数にchar argv[][]と
kounoike> 言った類の表記がOKかどうかの話と思ってたのですが、なんか勘違いしているのか
kounoike> な。
C99 になって, gcc の拡張機能がかなり取り込まれたんですよね....
# でも機能が大きくなりすぎたので, gcc でも完全には対応できてない.
例:
-------------------- ここから --------------------
#include <stdio.h>
int main(int argc, char argv[][])
{
for (int i = 0; argv[i] != 0; i++) {
printf("argv[%d] = `%s'.\n", i, argv[i]);
}
return 0;
}
--
名古屋大学大学院 情報科学研究科 計算機数理科学専攻
小野 孝男
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735