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 main()
{//可以不寫返回類型,即使定義了返回類型爲int。
// insert code here...
printf("Hello, World!\n");
}
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;
}
#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
基本數據類型傳遞給函數的時候是值傳遞。