main真正的形狀函式

2021-09-08 17:34:02 字數 1648 閱讀 6103

我們經常使用的像 int main()這種形式,但main長身體機能完全到底是什麼樣子?

以下這個main函式的形式可能有些出乎我們的意料:

int main(int argc, char *ar**, char *envp)

它可能與絕大多數教科書上描寫敘述的都不一樣。但實際上,這才是main函式真正完整的形式。

引數argc指出了執行該程式時命令列引數的個數。陣列ar**存放了全部的命令列引數。陣列envp存放了全部的環境變數。

環境變數 指的是一組值。從使用者登入後就一直存在,非常多應用程式須要依靠它來確定系統的一些細節,我們最常見的環境變數是path。它指出了應到**去搜尋應用程 序,如/bin。home也是比較常見的環境變數,它指出了我們在系統中的個人資料夾。

環境變數一般以字串"***=***"的形式存在,***表示變數 名,***表示變數的值。

值得一提的是。ar**陣列和envp陣列存放的都是指向字串的指標,這兩個陣列都以乙個null元素表示陣列的結尾。

我們能夠通過下面這個程式來**傳到argc、ar**和envp裡的都是什麼東西:

/* main.c */

int main(int argc, char *ar**, char *envp)

編譯它:

$ cc main.c -o main

執行時。我們有益加幾個沒有不論什麼作用的命令列引數:

$ ./main -xx 000

### argc ###

3### ar** ###

./main

-xx000

### envp ###

pwd=/home/lei

remotehost=dt.laser.com

hostname=localhost.localdomain

qtdir=/usr/lib/qt-2.3.1

lessopen=|/usr/bin/lesspipe.sh %s

kdedir=/usr

user=lei

ls_colors=

machtype=i386-redhat-linux-gnu

mail=/var/spool/mail/lei

inputrc=/etc/inputrc

lang=en_us

logname=lei

shlvl=1

shell=/bin/bash

hosttype=i386

ostype=linux-gnu

histsize=1000

term=ansi

home=/home/lei

path=/usr/local/bin:/bin:/usr/bin:/usr/x11r6/bin:/home/lei/bin

_=./main

我們看到。程式將"./main"作為第1個命令列引數,所以我們一共同擁有3個命令列引數。

這可能與大家平時習慣的說法有些不同。小心不要搞錯了。

最後是一句我喜歡的話

乙個人總要走陌生的路,看陌生的風景,聽陌生的歌,然後在某個不經意的瞬間,你會發現,原本費盡心機想要做的事。不知怎的,你已經可以從容面對。

main函式的入口函式

作業系統裝載程式之後,首先執行的 並不是main的第一行,而是某些別的 這些 負責準備好main函式執行所需要的環境,並且負責呼叫main函式,執行這些 的函式稱為入口函式或入口點 entry point 視平台的不同而有不同的名字。程式的入口點實際上是乙個程式的初始化和結束部分,它往往是執行庫的一...

形狀識別函式

moments 中心距 humoments findcontours 尋找輪廓 輸入影象為8位單通道影象,並已經被轉換成二值,用vector 定義變數存放輪廓 drawcontours arclength 周長 boundingrect 輪廓矩形外框 contourarea 輪廓面積 convexh...

main函式的引數

c程式最大的特點就是所有的程式都是用函式來裝配的。main 稱之為主函式,是所有程 序執行的入口。其餘函式分為有參或無參兩種,均由main 函式或其它一般函式呼叫,若呼叫 的是有參函式,則引數在呼叫時傳遞。main f1 int a,int b f2 int m,int n 在前面課程的學習中,對m...