重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
經(jīng)常看到C語言的main函數(shù)定義為:
創(chuàng)新互聯(lián)主營增城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,APP應(yīng)用開發(fā),增城h5微信小程序開發(fā)搭建,增城網(wǎng)站營銷推廣歡迎增城等地區(qū)企業(yè)咨詢
int main(int argc, char *argv[]),但是在函數(shù)體中經(jīng)常是根本不用main函數(shù)中的這兩個(gè)參數(shù),這兩個(gè)參數(shù)用于在運(yùn)行程序時(shí),從外部給程序傳遞參數(shù),其中argc中保存了參數(shù)的個(gè)數(shù),argv中分別保存了各個(gè)參數(shù).
例如一個(gè)程序的main()函數(shù)頭部形如int main(int argc, char *argv[]),編譯鏈接后生成的可執(zhí)行文件名為a.exe,那么請注意下面的調(diào)用:
a.exe abc def
在上面的命令行中,a.exe是要運(yùn)行的程序名稱,后面的abc和def就是傳入程序的兩個(gè)參數(shù),這兩個(gè)參數(shù)就通過argc和argv傳入程序,注意這些參數(shù)都是字符串。
通過上面的調(diào)用,在這個(gè)程序中,argc=3,a.exe是第一個(gè)參數(shù),這個(gè)字符串將保存在argv[0]中,abc和def分別是第二和第三個(gè)參數(shù),它們分別被保存在argv[1]和argv[2]中
要知道m(xù)ain函數(shù)也是由其他的程序調(diào)用的。
我們編寫的程序,最終是不存在所謂的函數(shù)名的,有的只有內(nèi)存單元地址0xffeedd00.
我們的程序執(zhí)行時(shí),程序加載到內(nèi)存,比方說整個(gè)程序所占用的內(nèi)存范圍是0xffee0000 ~ 0xffeedd00,這么多。
假設(shè)程序有一個(gè)小函數(shù)fun(),那么它的范圍可能是0xffee0000~0xffee00ff。
那么函數(shù)fun()的入口地址是多少? 0xffee0000。。
那么函數(shù)名fun實(shí)際上就是0xffee0000的別稱。
你用一個(gè)指針指向這個(gè)函數(shù),那么你把 指針 = 函數(shù)名,實(shí)際就是把0xffee0000這個(gè)內(nèi)存單元的地址給指針p。
所以,結(jié)論是:
函數(shù)名 是 程序在執(zhí)行時(shí), 函數(shù)所占內(nèi)存單元塊的 首地址 的別稱。
是。在C語言中,一個(gè)函數(shù)的函數(shù)名其實(shí)就是一個(gè)地址,即該函數(shù)的入口地址。我們可以聲明一個(gè)函數(shù)指針,并將函數(shù)的入口地址(函數(shù)名)賦值給這個(gè)指針,然后使用這個(gè)指針來調(diào)用具體的函數(shù)。
單片機(jī)C語言中斷入口函數(shù)標(biāo)準(zhǔn)寫法如下:
外部中斷0:void
ext0()
interrupt
定時(shí)器0:
void
time0()
interrupt
1
外部中斷1:void
ext1()
interrupt
2
定時(shí)器1:void
timer1()
interrupt
3
串口:
void
uart()
interrupt
4
如果要用其他工作寄存器組,后面可以加:using
n(n=0,1,2,3)