學習筆記:1.Hello,World代碼分析,函數


1.Hello,World代碼分析

#include解釋

#include <stdio.h>//#include預處理指令,編譯器根據後面給出的文件名,來查找並把這個文件包含到當前文件中
//被包含的文件爲xxx.h則是頭文件,包含需要使用的函數的聲明
//#include 可以包含任何編譯器能識別的c/c++代碼文件,
//如:c,hpp,cpp等,甚至,txt,abc等都可以

//<>包含的是系統自帶的文件,“”是開發人員自己創建的文件(與編譯器對文件的搜索順序有關)



//C語言是面向過程的語言,一個C程序中一定且只能有一個main函數,是程序的入口
int main(int argc, const char * argv[])
{

   // insert code here...
    printf("Hello, World!\n");
    return 0;
}

main函數解釋

//C語言是面向過程的語言,一個C程序中一定且只能有一個main函數,是程序的入口
int main(int argc, const char * argv[])
{
   // insert code here...
    printf("Hello, World!\n");
    return 0;
}

main()
{//可以不寫參數和返回類型。如: main() 此時main默認範圍值爲int

   // insert code here...
    printf("Hello, World!\n");
    return 0;
}
函數沒有寫返回值類型,並不代表函數沒有返回值,而是表示返回值類型爲int類型,void才代表函數沒有返回值

不過,把main設置成void也可以運行,#C語言語法不是很嚴謹啊。

void main()
{//無返回值,照樣可以運行

   // insert code here...
    printf("Hello, World!\n");
}


並且定義返回爲int也可不寫返回語句。

 int main()
{//可以不寫返回類型,即使定義了返回類型爲int。

   // insert code here...
    printf("Hello, World!\n");
}


開發和運行C程序的步驟爲

1.編寫程序

2.編譯 (檢查語法是否有錯誤,編譯成功時根據每個願原程序文件名,生成目標文件.obj。有幾個目標文件生成幾個.obj)

3.鏈接 (將有關聯的obj目標文件,以及系統提供的C函數組合在一起,生成可執行文件的過程)

4.運行

函數:

1.主函數 main()每個程序有且只有一個,C語言的入口,C程序總是從主函數開始執行。

2.開發人員自己定義的函數

3.C語言提供的庫函數。


函數的聲明和定義

標準c語言中,函數的定義順序是必須要注意的,只有後面定義的函數能調用前面的函數,(xcode是包裝過的,不會編譯不通過。不過寫的是偶會有警告)

#include <stdio.h>
int sum(int a,int b){
    int c=a+b;
    return c;
}
int main(int argc, const char * argv[])
{    // insert code here...
    printf("c:%d\n",sum(3,4));
    return 0;
}

以上沒有問題

#include <stdio.h>

int main(int argc, const char * argv[])
{    // insert code here...
    printf("c:%d\n",sum(3,4));//這句會被警告
    return 0;
}
int sum(int a,int b){
    int c=a+b;
    return c;
}

以上會有警告



不想被順序反省,可以在main函數前做一下函數聲明

#include <stdio.h>
//以下2句爲函數聲
int sum(int,int);//簡寫
//int sum(int a,int b) //寫全也可以
//聲明函數只是讓main知道有這個函數存在,至於函數有沒有定義,會在函數鏈接時出錯。

int main(int argc, const char * argv[])
{    // insert code here...
    printf("c:%d\n",sum(3,4));//這句會被警告
    return 0;
}
int sum(int a,int b){
    int c=a+b;
    return c;
}



在大型C程序中,爲了分塊驚醒開發,一般會將函數的聲明和定義分別放在2個文件中。

函數聲明放在.h的頭文件中。函數定義放在.c源文件中。

sum.h

int sum(int,int);//簡寫
//int sum(int a,int b) //寫全也可以

sum.c

int sum(int a,int b){
    int c=a+b;
    return c;
}


main.c

#include <stdio.h>
#include "sum.h"

int main(int argc, const char * argv[])
{    // insert code here...
    printf("c:%d\n",sum(3,4));//這句會被警告
    return 0;
}

不能直接在main.c中導入sum.c文件,會在鏈接時產生“標識符重複



3.函數的型參和實際參數

定義函數時,函數名,後面,需要傳入的變量時,型參,調用函數時,傳入的變量時實參。

#include <stdio.h>

//定義函數時,設置的,a,b是型參
void sum(int a,int b){
    b=5;
    printf("b=%d:sum內部\n",b);
}
int main(int argc, const char * argv[])
{    // insert code here...
    //調用函數時,傳入的,2,3時實參
    int a=5;
    int b=6;
    sum(a,b);
    printf("b=%d:main中調用sum\n",b);
    return 0;
}

b=5:sum內部

b=6:main中調用sum

基本數據類型傳遞給函數的時候是值傳遞。




發佈了71 篇原創文章 · 獲贊 2 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章