標C編程筆記day08~day10代碼規範、編譯、庫函數、命名空間、函數調用、啞元函數

來源:互聯網
上載者:User

標籤:style   使用   檔案   資料   問題   ar   代碼   amp   

代碼編寫規範,命令列編譯,庫函數簡介,命名空間介紹,函數調用介紹,啞元函數介紹


一般來說,有.c實現檔案,應該都要有.h標頭檔,.c檔案中的所有函數都應該在.h檔案中聲明。

命令列編譯方法:
1、gcc 後面帶所有.c 檔案 -o 輸出檔案名   直接產生可執行檔
2、依次gcc -c .c檔案  -o ***.o  產生***.o檔案
  然後 gcc 所有.o檔案 -o 輸出檔案   產生可執行檔
程式中的靜態全域變數不可以被其他檔案中的語句使用。
.c檔案使用.h檔案中的全域變數:extern 變數類型 變數名;
.h檔案應該用#ifdef……#define……#endif  包含,防止重複引用出問題 
經驗:
結構體定義時,變數點位元組越大的應該聲明在最後面,減少空間浪費。

結構體中,student stu;student *pstu; 

取變數地址可直接用&(pstu->member),&stu.member,調用可使用 pstu->member,stu.member



堆記憶體的使用:
malloc分配的地址,不分局部和全域,如果沒有被free,就能在其他地方使用。
calloc(sizeof(int),n);//分配 n個整數的空間
malloc(n*sizeof(int));//分配 n個整數的空間


排序庫函數:qsort()   標頭檔:stdlib.h
qsort 的函數原型是void __cdecl qsort (void *base,size_tnum,size_t width,int (__cdecl *comp)(const void *,const void*))
參數1:數組名
參數2:元素個數
參數3:資料類型大小,如:sizeof(int)
參數:比較函數:
如:int comp(const void *a,const void *b)
   {
return strcmp(*(const char **)a,*(const char **)b);
   }
   int comp(const void* a,const void* b)
   {
return*(int*)a-*(int*)b;
   }
庫函數使用:
atoi,atol,atoll,atof   --字元轉換成數字   標頭檔:stdlib.h
char str[50]="123";int id=0;
sscantf(str,"%d",&id);//從字串讀到資訊放入變數中
sprintf(str,"hello %d",123);//把變數的值輸出到字串
fscanf(FILE*,"%d",&id);//從檔案輸入到變數
fprintf(FILE*,"%d",id);//變數輸出到檔案


命名空間聲明:
namespace ns1{
//代碼,函數
void fun1(){}
}
//預設命名空間函數
void fun1(){}
調用:
如果是預設的命名空間,可直接調用 fun1();或::fun1();調用
ns1中的函數 ,可用 ns1::fun1(); 調用
重載:
和函數名、參數列表有關,和返回值無關(同一範圍,參數不同,函數名相同才能構成重載)
重載解析:安全匹配>常量轉換>升級轉換>標準轉換>自訂轉換>省略符號匹配
不同命名空間的同名函數,在範圍內可見時,可構成重載,但不一定是重載。


查看 .o檔案中的模組:
nm ***.o
c++和c函數的區別:
c編譯器產生的函數名不變,c++編譯器產生的函數名會變化(c++換名原則),如果是C++調用c的函數,通過在 聲明函數前加 exterm "C" [函式宣告]  ,可防止c++在調用時改名,c中不支援重載。
函數在定義時,可指定參數的預設值,或者在聲明時可帶預設參數。

啞無函數的定義:有參數類型,無參數變數,傳任何參數值對函數調用的結果無影響,只是為了重載。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.