日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux C编程学习--main()函数简析

發(fā)布時間:2023/12/9 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux C编程学习--main()函数简析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

提到C語言的函數(shù),有太多內(nèi)容要講,今天我們要看的是main()函數(shù)。

main()函數(shù)時程序的入口點,任何程序都要有main()函數(shù),一般大家都怎么寫main()函數(shù)啊?

main();

void main();

void main(void);

int main();

int main(void);

int main(int argc,char * argv[]);

好像哪種都可以啊!是這樣嗎?好像編譯器從沒報過錯啊?這時因為編譯器對main()函數(shù)的擴展,如果編譯器不支持這塊,則有可能會報錯,而標準的寫是什么呢?有兩種:

int main(void);

int main(int argc,char *argv[]);

有的同學做過單片機,好像都是main()啊,也沒問題啊,這時因為單片機程序中沒人調(diào)用main()函數(shù),直接從main()函數(shù)調(diào)用完了,沒返回值。而對我們嵌入式linux C 呢?這里是有操作系統(tǒng)的,是會調(diào)用main()函數(shù)的,所以這里一般會有返回值,所以 int main(int argc,char *argv[])是最標準的寫法。我們今天要講的就是int main(int argc,char *argv[])!

argc是什么?是參數(shù)的個數(shù),什么參數(shù)?是我們執(zhí)行程序時所附給的參數(shù),argv[]是什么,是存放參數(shù)的數(shù)組,argv[0]是什么呢?是我們執(zhí)行的程序,例如: ./a.out 。我們下面編寫程序看函數(shù)時如何調(diào)用參數(shù)的?

[cpp]?view plaincopy
  • #include?<stdio.h>??
  • ??
  • int?main(int?argc,?char?*argv[])??
  • {??
  • ????int?i;??
  • ????for(i?=?0;i?<?argc;i++)??
  • ????printf("%s\n",argv[i]);??
  • ??
  • ????return?0;??
  • }??
  • 執(zhí)行結(jié)果如下:

    [cpp]?view plaincopy
  • fs@ubuntu:~/qiang/hanshu$?gcc?-o?1?1.c??
  • fs@ubuntu:~/qiang/hanshu$?./1?xiao?zhi?qiang??
  • ./1??
  • xiao??
  • zhi??
  • qiang??
  • fs@ubuntu:~/qiang/hanshu$???
  • 大家可以看到參數(shù)被存在什么位置,是怎么存放的。

    那我們能不能對傳入的參數(shù)進行運算呢?當然可以了!比如下面 傳入?yún)?shù) ./?1? 30 50,將30和50相加。看程序:

    [cpp]?view plaincopy
  • include?<stdio.h>??
  • ??
  • int?tt(char?*p)??
  • {??
  • ????int?sum?=?0;??
  • ????while(*p)??
  • ????????sum?=?sum*10?+?*p++?-'0';??
  • ??
  • ????return?sum;??
  • }??
  • ??
  • int?main(int?argc,?char?*argv[])??
  • {??
  • ????int?j;??
  • ????int?count?=?0;??
  • ????for(j?=?1;j?<?argc;j++)??
  • ????{??
  • ????????count?+=?tt(argv[j]);??
  • ????}??
  • ????printf("%d\n",count);??
  • ????return?0;??
  • }??

  • 執(zhí)行結(jié)果如下:

    [cpp]?view plaincopy
  • fs@ubuntu:~/qiang/hanshu$?ls??
  • 1??1.c??hanshu??hashu.c??
  • fs@ubuntu:~/qiang/hanshu$?./hanshu?30?50??
  • 80??
  • fs@ubuntu:~/qiang/hanshu$???
  • 是可以的。

    當然這里給大家介紹一個將字符數(shù)字轉(zhuǎn)化成整型數(shù)字的方法,把上面寫得程序給大家看看

    [cpp]?view plaincopy
  • int?tt(char?*p)??
  • {??
  • ????int?sum?=?0;??
  • ????while(*p)??
  • ????{???sum?*=?10;??
  • ????????sum?+=?(*p++)?-'0';??
  • ????}??
  • ????return?sum;??
  • }??
  • ?

    就是? '8' - '0' = 8;ASCII碼值相減,我們的目的是得到8,而不是將字符'8'轉(zhuǎn)化成整數(shù)8,這時沒法轉(zhuǎn)換的,因為'8'是字符,存放的是ASCII碼,是56,所以是沒法轉(zhuǎn)化成int數(shù)據(jù)的,但我們可以利用上面的方法得到8,大家要清楚這一點!

    總結(jié)

    以上是生活随笔為你收集整理的Linux C编程学习--main()函数简析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。