青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

《c++primer》學習隨筆——引用

     摘要: 通過一個例子簡單介紹了引用的基本概念和用法  閱讀全文

posted @ 2011-06-15 19:19 古月 閱讀(219) | 評論 (0)編輯 收藏

《c++primer》學習隨筆——定義、聲明和extern

1,聲明一個變量,必須加關鍵字extern
2,沒有關鍵字extern,則就為變量的定義,無論這個變量定義時有沒有初始化
3,只要定義變量時初始化了,即使前面加了關鍵字extern,也是定義,不是聲明。(不過只有在函數體外時,才能夠在定義且初始化時,加上extern關鍵字,這是為了const變量設定的)
4,多文件程序中,一個文件含有變量的定義,另外一個文件中含有變量的聲明,定義只能有一次,聲明不限。
5,非const變量,定義時默認是加了extern的,即在函數體外定義變量時,默認加了extern,說明這是一個全局變量,可以被其他文件訪問(訪問的前提是在這個文件中做了聲明)。
   但是const變量,默認是不加extern的,也就是即使在函數體外全局作用域定義一個const變量,也只能夠在定義的這個文件訪問,不能被其他文件訪問。要想被其他文件訪問,需要在定義const變量時,顯示的加上extern關鍵詞。 

    
    extern可以置于變量或者函數前,以標示變量或者函數的定義在別的文件(當然也有可能定義就在本文件中)中,提示編譯器遇到此變量和函數時在其他模塊中尋找其定義。



posted @ 2011-06-15 18:27 古月 閱讀(294) | 評論 (0)編輯 收藏

關于main()函數(轉)

首先聲明,非本人原創,轉自http://tieba.baidu.com/f?kz=259374701,寫的非常好,謝謝原作者了。main()函數稱之為主函數,一個C程序總是從main()函數開始執行的。

一、main()函數的形式
在最新的 C99 標準中,只有以下兩種定義方式是正確的:

int main( void )--無參數形式
{
...
return 0;
}

int main( int argc, char *argv[] )--帶參數形式
{
...
return 0;
}

int指明了main()函數的返回類型,函數名后面的圓括號一般包含傳遞給函數的信息。void表示沒有給函數傳遞參數。關于帶參數的形式,我們等會討論。

瀏覽老版本的C代碼,將會發現程序常常以

main()

這種形式開始。C90標準允許這種形式,但是C99標準不允許。因此即使你當前的編譯器允許,也不要這么寫。

你還可能看到過另一種形式:

void main()

有些編譯器允許這種形式,但是還沒有任何標準考慮接受它。C++ 之父 Bjarne Stroustrup 在他的主頁上的 FAQ 中明確地表示:void main( ) 的定義從來就不存在于 C++ 或者 C 。所以,編譯器不必接受這種形式,并且很多編譯器也不允許這么寫。

堅持使用標準的意義在于:當你把程序從一個編譯器移到另一個編譯器時,照樣能正常運行。


二、main()函數的返回值

從前面我們知道main()函數的返回值類型是int型的,而程序最后的 return 0; 正與之遙相呼應,0就是main()函數的返回值。那么這個0返回到那里呢?返回給操作系統,表示程序正常退出。因為return語句通常寫在程序的最后,不管返回什么值,只要到達這一步,說明程序已經運行完畢。而return的作用不僅在于返回一個值,還在于結束函數。
現在我們來做一個小試驗(注意:本人的系統是Windows XP, 編譯環境是TC)來觀察main()函數的返回值。編寫如下代碼并編譯運行:

//a.c
#include "stdio.h"
int main(void)
{
printf("I love you.");

return 0;
}

將這個文件保存為a.c,編譯運行后會生成一個a.exe文件。現在打開命令提示符,在命令行里運行剛才編譯好的可執行文件,然后輸入 echo %ERRORLEVEL% ,回車,就可以看到程序返回 一個0 。如果把 return 0; 改為 return 99; ,那么很顯然,再次執行上述步驟以后你可以看到程序返回99。要是你這樣寫 return 99.99; 那還是返回99,因為99.99被傳給操作系統之前,被強制類型轉換成整數類型了。
現在,我們把a.c改回原來的代碼,然后再編寫另一個程序b.c:

//b.c
#include "stdio.h"
int main(void)
{
printf("\nI'm too.");

return 0;
}

編譯運行后打開命令提示符,在命令行里輸入a&&b 回車,這樣你就可以看到《人鬼情未了》里面經典的愛情對白:

I love you.
I'm too.

&& 的含義是:如果 && 前面的程序正常退出,則繼續執行 && 后面的程序,否則不執行。所以,要是把a.c里面的 return 0; 刪除或者改為 return 99; ,那么你只能看到 I love you. 。也就是說,程序b.c就不執行了。現在,大家該明白 return 0; 的作用了吧。


三、main()函數的參數

C編譯器允許main()函數沒有參數,或者有兩個參數(有些實現允許更多的參數,但這只是對標準的擴展)。這兩個參數,一個是int類型,一個是字符串類型。第一個參數是命令行中的字符串數。按照慣例(但不是必須的),這個int參數被稱為argc(argument count)。大家或許現在才明白這個形參為什么要取這么個奇怪的名字吧,呵呵!至于英文的意思,自己查字典吧。第二個參數是一個指向字符串的指針數組。命令行中的每個字符串被存儲到內存中,并且分配一個指針指向它。按照慣例,這個指針數組被稱為argv(argument value)。系統使用空格把各個字符串格開。一般情況下,把程序本身的名字賦值給argv[0],接著,把最后的第一個字符串賦給argv[1],等等。
 現在我們來看一個例子:

//c.c
#include "stdio.h"
int main(int argc, char *argv[])
{
int count;

printf("The command line has %d arguments: \n",argc-1);
for(count=1;count<argc;count++)
printf("%d: %s\n",count,argv[count]);

return 0;
}
編譯運行,在命令行輸入c I love you 回車,下面是從命令行運行該程序的結果:

The command line has 3 arguments:
1:I
2:love
3:you

從本例可以看出,程序從命令行中接受到4個字符串(包括程序名),并將它們存放在字符串數組中,其對應關系:
argv[0] ------> c(程序名)
argv[1] ------> I
argv[2] ------> love
argv[3] ------> you
至于argc的值,也即是參數的個數,程序在運行時會自動統計,不必我們操心。
這個例子中,每個字符串都時一個單詞(字母),那既然是字符串,要把一句話當作參數賦給程序該怎么辦?你可以在命令行里這樣輸入 c "I love you." "I'm too."。程序運行結果:

The command line has 2 arguments:
1:I love you.
2:I'm too.

其對應關系:
argv[0] ------> c(程序名)
argv[1] ------> I love you.
argv[2] ------> I'm too.

要注意的是,你在命令行的輸入都將作為字符串形式存儲于內存中。也就是說,如果你輸入一個數字,那么要輸出這個數字,你應該用%s格式而非%d或者其他。
再來看一個例子:
//d.c
#include "stdio.h"
int main(int argc, char *argv[])
{
FILE *fp;

fp=fopen(argv[1],"w");
fputs("I love you.",fp);
fclose(fp);

return 0;
}
編譯運行,打開命令行并輸入d love.txt 回車。這樣,打開d.c文件所在的目錄,你會發現多了一個名為 love.txt 的文件,打開后里面的內容正是世界上說的最多的那句話。
當然,你可能會說我不需要使用命令行參數就可以做到這些。是的,你當然可以。使用命令行參數的理由或許就是練習命令行用法,以備以后需要編寫基于命令行的程序。還有一個好處是,不需要C環境就可以運行已經編譯好的程序。比如,你把上面那個程序編譯后生成的d.exe發給你的女朋友,再告訴她怎么運行,這樣,你的女朋友可以用另一種方式體會到你對她的濃情蜜意。

posted @ 2011-05-31 23:42 古月 閱讀(254) | 評論 (0)編輯 收藏

C語言之Main函數返回值問題分析(非本人原創,轉自百度文庫)

 

C語言之Main函數返回值問題分析: 很多人甚至市面上的一些書籍,都使用了void main( ) ,其實這是錯誤的。C/C++ 中從來沒有定義過void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主頁上的 FAQ 中明確地寫著 The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even been C.( void main( ) 從來就不存在于 C++ 或者 C )。下面我分別說一下 C 和 C++ 標準中對 main 函數的定義。
  “The C programming Language(《C 程序設計語言》)用的就是 main( )。”--- 這是因為第一版的C語言只有一種類型,那就是int,沒有char,沒有long,沒有float,…………既然只有一種類型,那么就可以不寫,后來的改進版為了兼容以前的代碼于是規定:不明確標明返回值的,默認返回值為int,也就是說 main()等同于int main(),而不是等同于void main()。在C99中,標準要求編譯器至少給 main() 這種用法來個警告。
1. C
  在 C89 中,main( ) 是可以接受的。Brian W. Kernighan 和 Dennis M. Ritchie 的經典巨著 The C programming Language 2e(《C 程序設計語言第二版》)用的就是 main( )。不過在最新的 C99 標準中,只有以下兩種定義方式是正確的:
int main( void )
int main( int argc, char *argv[] )
(參考資料:ISO/IEC 9899:1999 (E) Programming languages — C 5.1.2.2.1 Program startup)
  當然,我們也可以做一點小小的改動。例如:char *argv[] 可以寫成 char **argv;argv 和 argc 可以改成別的變量名(如 intval 和 charval),不過一定要符合變量的命名規則。
  如果不需要從命令行中獲取參數,請用int main(void) ;否則請用int main( int argc, char *argv[] ) 。
main 函數的返回值類型必須是 int ,這樣返回值才能傳遞給程序的激活者(如操作系統)。
  如果 main 函數的最后沒有寫 return 語句的話,C99 規定編譯器要自動在生成的目標文件中(如 exe 文件)加入return 0; ,表示程序正常退出。不過,我還是建議你最好在main函數的最后加上return 語句,雖然沒有這個必要,但這是一個好的習慣。注意,vc6不會在目標文件中加入return 0; ,大概是因為 vc6 是 98 年的產品,所以才不支持這個特性。現在明白我為什么建議你最好加上 return 語句了吧!不過,gcc3.2(Linux 下的 C 編譯器)會在生成的目標文件中加入 return 0; 。
2. C++
  C++98 中定義了如下兩種 main 函數的定義方式: [Page]
int main( )
int main( int argc, char *argv[] )
(參考資料:ISO/IEC 14882(1998-9-01)Programming languages — C++ 3.6 Start and termination)
  int main( ) 等同于 C99 中的 int main( void ) ;int main( int argc, char *argv[] ) 的用法也和 C99 中定義的一樣。同樣,main 函數的返回值類型也必須是int。如果main函數的末尾沒寫return語句,C++98 規定編譯器要自動在生成的目標文件中加入 return 0; 。同樣,vc6 也不支持這個特性,但是 g++3.2(Linux 下的 C++ 編譯器)支持。
3. 關于 void main
  在 C 和 C++ 中,不接收任何參數也不返回任何信息的函數原型為“void foo(void);”。可能正是因為這個,所以很多人都誤認為如果不需要程序返回值時可以把main函數定義成void main(void) 。然而這是錯誤的!main 函數的返回值應該定義為 int 類型,C 和 C++ 標準中都是這樣規定的。雖然在一些編譯器中,void main 可以通過編譯(如 vc6),但并非所有編譯器都支持 void main ,因為標準中從來沒有定義過 void main 。g++3.2 中如果 main 函數的返回值不是 int 類型,就根本通不過編譯。而 gcc3.2 則會發出警告。所以,如果你想你的程序擁有很好的可移植性,請一定要用 int main 。
  總而言之:
void main 主函數沒有返回值
main 默認為int 型,即 int main(),返回整數。
注意,新標準不允許使用默認返回值,即int不能省,而且對應main函數不再支持void型返回值,因此為了使程序有很好的移植性,強烈建議使用:
int main()
{
return 0; /* 新標準主函數的返回值這條語句可以省略 */
}

posted @ 2011-05-31 20:20 古月 閱讀(421) | 評論 (0)編輯 收藏

僅列出標題
共3頁: 1 2 3 
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導航

統計

常用鏈接

留言簿

隨筆分類

隨筆檔案

文章檔案

C++/C

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲综合电影| 久久精品国产亚洲aⅴ| 欧美三级网址| 欧美国产日韩精品免费观看| 性欧美xxxx大乳国产app| 亚洲影院在线| 久久久久久久999精品视频| 免费不卡中文字幕视频| 欧美精品www| 国产精品一区二区三区免费观看| 欧美精品在线看| 国产精品亚发布| 一区二区三区高清| 欧美亚洲在线播放| 嫩草国产精品入口| 国产精品久久一卡二卡| 亚洲丰满在线| 久久国产欧美日韩精品| 亚洲国产成人不卡| 亚洲狼人综合| 欧美中文在线字幕| 欧美视频一区二区三区在线观看| 国产欧美一区二区三区在线看蜜臀| 1000精品久久久久久久久| 亚洲视频在线免费观看| 欧美暴力喷水在线| 久久久久久久久蜜桃| 国产一区二区观看| 午夜精品福利视频| 亚洲午夜av| 欧美午夜片在线免费观看| 亚洲美女网站| 亚洲第一毛片| 欧美高清你懂得| 99精品视频一区二区三区| 欧美二区在线看| 欧美国产日韩在线| 亚洲天堂免费观看| 亚洲天堂网站在线观看视频| 欧美午夜电影完整版| 午夜精品福利一区二区三区av| 夜夜嗨av一区二区三区免费区| 免费国产自线拍一欧美视频| 亚洲免费成人av| 日韩亚洲欧美精品| 国产精品影视天天线| 韩日精品在线| 亚洲五月婷婷| 伊人天天综合| 欧美福利视频一区| 欧美日韩精品一区二区在线播放| 99国产精品99久久久久久粉嫩| 中国日韩欧美久久久久久久久| 欧美色综合天天久久综合精品| 欧美一区二区三区免费观看| 久久国产精品久久久久久| 曰韩精品一区二区| 一本色道久久综合精品竹菊| 国产一区二区三区四区三区四| 欧美激情无毛| 国产精品视频成人| 亚洲精选久久| 亚洲国产小视频| 久久久久久久久久久久久9999| 99亚洲视频| 欧美日韩99| 亚洲国产精品嫩草影院| 国内一区二区三区| 久久都是精品| 久久精品日产第一区二区| 国产精品久久久久久久久久尿 | 欧美亚洲综合另类| 一区二区黄色| 欧美日韩色综合| 一区二区动漫| 亚洲图片欧洲图片av| 欧美伦理a级免费电影| 欧美激情女人20p| 久久天堂精品| 欧美国产先锋| 99视频一区二区三区| 国产精品久久久久久久浪潮网站| 亚洲一级二级| 欧美风情在线观看| 一本色道久久88亚洲综合88| 欧美激情视频在线播放| 99国产精品一区| 久久精品久久综合| 在线观看欧美日韩| 欧美日韩一区二区三区在线| 亚洲影院污污.| 亚洲国产成人高清精品| 在线亚洲免费| 91久久极品少妇xxxxⅹ软件| 欧美日韩成人激情| 欧美一区二区大片| 一区二区三区高清视频在线观看| 午夜宅男久久久| 日韩视频一区二区三区| 国产在线欧美日韩| 欧美日韩亚洲三区| 老色鬼久久亚洲一区二区| 一区二区激情视频| 亚洲欧洲一区| 免费成人毛片| 可以免费看不卡的av网站| 亚洲激情图片小说视频| 国产女主播一区| 国产精品久线观看视频| 欧美日韩视频在线第一区| 性色av一区二区三区| 一区二区三区日韩精品视频| 欧美大片18| 嫩草伊人久久精品少妇av杨幂| 亚洲欧美日韩一区二区三区在线观看| 狠狠综合久久av一区二区老牛| 欧美午夜免费影院| 一本综合久久| 国产精品捆绑调教| 欧美日韩一区二区三区在线观看免| 久久亚洲精品一区二区| 久久成人资源| 久热精品视频在线| 免费久久99精品国产自在现线| 久久综合伊人77777| 欧美成人蜜桃| 国产一区二区精品| 亚洲免费观看高清在线观看 | 亚洲缚视频在线观看| 亚洲黄色影院| 久久精品国产综合| 欧美少妇一区| 亚洲国产成人不卡| 亚洲综合精品四区| 欧美成人一区在线| 亚洲永久免费精品| 欧美二区在线| 亚洲成人在线免费| 久久久综合网站| 亚洲欧洲精品一区二区三区波多野1战4| 一区二区三区波多野结衣在线观看| 亚洲欧美日韩精品久久| 欧美日韩色婷婷| 亚洲精品久久久蜜桃| 久久久一二三| 亚洲一区二区视频在线观看| 久久久精品国产一区二区三区| 欧美人在线观看| 这里只有视频精品| 免费亚洲电影在线观看| 一区二区久久久久久| 久久久青草青青国产亚洲免观| 欧美日韩亚洲91| 一区二区三区四区五区在线| 男人天堂欧美日韩| 日韩亚洲精品视频| 欧美一区二区大片| 久久久久成人精品| 国产综合婷婷| 久久国产精品黑丝| 亚洲精品久久| 欧美激情中文不卡| 亚洲第一在线综合网站| 久久久亚洲国产美女国产盗摄| 一本一本大道香蕉久在线精品| 欧美精品三级日韩久久| 亚洲第一福利视频| 亚洲国产另类久久精品| 欧美婷婷久久| 美女精品在线| 欧美高清成人| 亚洲一区二区三区涩| 午夜欧美大尺度福利影院在线看| 国产精品久久久久aaaa樱花| 亚洲一区二区三| 久久综合九色99| 亚洲一区二区三区高清不卡| 欧美一区二区日韩| 亚洲在线一区二区三区| 久久国产99| 欧美综合激情网| 欧美日本国产| 亚洲成人在线网站| 黄色成人91| 亚洲摸下面视频| 亚洲大片精品永久免费| 亚洲精品国偷自产在线99热| 国产精品久久国产精麻豆99网站| 久久狠狠婷婷| 国产视频一区在线观看| 日韩亚洲欧美在线观看| 亚洲精品美女久久7777777| 久久亚洲国产精品一区二区| 久久精品中文字幕一区二区三区| 欧美另类在线观看| 日韩视频一区二区三区| 日韩网站在线观看| 欧美激情精品久久久久久| 欧美高清视频在线观看| 亚洲欧洲在线播放|