スポンサーサイト
2015.06.20 Saturday

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | - | - | pookmark |
C言語main関数の隠された第三引数に迫る!!
2011.11.22 Tuesday

題名の通りです。
ではまず、普通のmain関数を思い浮かべてください。

main()
{
}

int main(void)
{
}

void main(void)
{
}

int main(int argc, char **argv)
{
}

int main(int argc, char *argv[])
{
}


皆さんが知っているのはこんなもんだと思うんです。

しかしッ!!!

なんと、あともうひとつあるんです!
それが「第三の引数」というやつです。

こんな感じのものです。


int main(int argc, char *argv[], char *envp[])
{
}





えええええええ!?
これだけか!
envpのサイズを教えてくれる「argc」みたいなやつはないのか?!

………、これだけですし「argc」みたいにenvpのサイズを教えてくれる心優しい引数はありません。


で、何をするやつかといいますと「Enviroment ナントカ、つまり環境変数が中にはいっているんですね。

で、仕様的にはNULLへのポインタがあった場合にそこで終了、という感じらしいです。


#include <stdio.h>
int main(int argc, char *argv[], char *envp[])
{
  int i;
  for (i = 0; envp[i] != NULL; i++) {
    printf("%d: [%s]¥n", i, envp[i]);
  }
  return 0;
}


こんな感じのプログラムを書いてみて、そいつを実行してみます。


0: [ALLUSERSPROFILE=C:¥ProgramData]
1: [APPDATA=C:¥Users¥moge¥AppData¥Roaming]
2: [CommonProgramFiles=C:¥Program Files¥Common Files]
3: [COMPUTERNAME=moge-PC]
4: [ComSpec=C:¥Windows¥system32¥cmd.exe]
5: [FP_NO_HOST_CHECK=NO]
6: [HOMEDRIVE=C:]
7: [HOMEPATH=¥Users¥moge]
8: [LOCALAPPDATA=C:¥Users¥moge¥AppData¥Local]
9: [LOGONSERVER=moge-PC]
10: [NUMBER_OF_PROCESSORS=2]
11: [OS=Windows_NT]
12: [Path=C:¥Program Files¥Common Files¥Microsoft Shared¥Windows Live;C:¥Windows
¥system32;C:¥Windows;C:¥Windows¥System32¥Wbem;C:¥Windows¥System32¥WindowsPowerSh
ell¥v1.0¥;c:¥Program Files¥Microsoft SQL Server¥90¥Tools¥binn¥;C:¥MinGW¥bin¥;C:¥
Program Files¥GnuWin32¥bin;C:¥Program Files¥Windows Live¥Shared;C:¥Program Files
¥TortoiseSVN¥bin;C:¥Program Files¥Java¥jdk1.7.0¥bin;C:¥Program Files¥Java¥jdk1.7
.0¥bin;]
13: [PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC]
14: [PROCESSOR_ARCHITECTURE=x86]
15: [PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 6, GenuineIntel]
16: [PROCESSOR_LEVEL=6]
17: [PROCESSOR_REVISION=1706]
18: [ProgramData=C:¥ProgramData]
19: [ProgramFiles=C:¥Program Files]
20: [PROMPT=$P$G]
21: [PSModulePath=C:¥Windows¥system32¥WindowsPowerShell¥v1.0¥Modules¥]
22: [PUBLIC=C:¥Users¥Public]
23: [SESSIONNAME=Console]
24: [SystemDrive=C:]
25: [SystemRoot=C:¥Windows]
26: [TEMP=C:¥Users¥moge¥AppData¥Local¥Temp]
27: [TMP=C:¥Users¥moge¥AppData¥Local¥Temp]
28: [USERDOMAIN=moge-PC]
29: [USERNAME=moge]
30: [USERPROFILE=C:¥Users¥moge]
31: [VBOX_INSTALL_PATH=C:¥Program Files¥Oracle¥VirtualBox¥]
32: [VS90COMNTOOLS=c:¥Program Files¥Microsoft Visual Studio 9.0¥Common7¥Tools¥]
33: [windir=C:¥Windows]

こんな感じになりました。
ちゃんと環境変数がでてますね。




ちなみにVC++でもGCCでもでちらでもできました。
Linuxでもできるそうです。


知っておいて損はないですが、あんまり意味ないですね
| moge32 | PCその他 | comments(0) | - | pookmark |
スポンサーサイト
2015.06.20 Saturday
| スポンサードリンク | - | - | - | pookmark |
Comment
name:
email:
url:
comments:
Search
Profile
Category
Archive
Latest Entry
Recent Comment
  • 昔のパソコン MSX ・・・
    moge32 (07/27)
  • 昔のパソコン MSX ・・・
    go15 (07/25)
  • INT 0x18 - ROMBASIC起動!?
    moge32 (05/27)
  • INT 0x18 - ROMBASIC起動!?
    mikerosss (05/23)
  • Vistaアクセサリを7で動かすとどうなるだろうか。
    moge32 (04/16)
  • Vistaアクセサリを7で動かすとどうなるだろうか。
    x (04/16)
  • Vistaアクセサリを7で動かすとどうなるだろうか。
    moge32 (03/29)
  • Vistaアクセサリを7で動かすとどうなるだろうか。
    25 (03/28)
  • 日本人は恥ずかしくて使えない壁紙
    moge32 (03/27)
  • 日本人は恥ずかしくて使えない壁紙
    25 (03/26)
Links
Admin
Calendar
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< September 2018 >>
イケ麺時計
グリムス
MOGESYSTEMのPixiv
釣りみくじ

コリント占い
Sponsored links
Mobile
qrcode
無料ブログ作成サービス JUGEM