C言語を独学している初心者です。何か目的があってというより、興味本位の質問です。
コマンドライン引数の文字列のサイズを取得しようとsizeofを使うと以下の結果になりました。
c
1#include <stdio.h> 2#include <string.h> 3 4int main(int argc, char const *argv[]) 5{ 6 printf("argv[0]: %s\n", argv[0]); 7 printf("sizeof(argv[0]): %zu\n", sizeof(argv[0])); 8 printf("strlen(argv[0]): %zu\n", strlen(argv[0])); 9 10 return 0; 11}
実行結果
terminal
1argc: 1 2sizeof(argv[0]): 8 3strlen(argv[0]): 46
気になったので、以下のループを回して余分にアドレスの中身を見ていると
c
1 for (size_t i = 0; i <500; i++) 2 { 3 printf("%c",argv[0][i]); 4 }
実行結果
terminal
1USER=username~~~~~
filenameの終端文字以降、user情報やパスなどいろいろ入っていました。
これは、私の実行環境特有のもので、実行されているプログラムと関係ないものなのか、何かセットのものなのか、何なのでしょうか。
追記
更に深く文字列を追っていくと、デバッグの情報や、エディタの情報が入っていたので、おそらく、実行されているプログラムに関係があるものだと思います。
ここらへんの原理を理解しようと思ったら私はMacを使っているのでLinuxや、gccのコンパイラの仕組みを理解すればわかるようになりますでしょうか?
回答3件
あなたの回答
tips
プレビュー