.c 和 .cpp 的區別
cpp就是編譯c++文件,支持c++語法;而c就是編譯c語言文件,支持c語言
引用
引用是C++對C的一個擴充,c語言沒有引用,只是作為取地址;引用符“&”是c++語言中
1、變量的引用就是變量的別名,對這個引用的操作就是對這個變量的操作
2、將引用作為函數參數,來擴充函數傳遞數據的功能
例如:文件就得命名為.cpp,用C++來編譯
#include <stdio.h> #include <stdlib.h> void exgcd(int a, int b, int& x, int& y, int& d); int inv(int t, int p); //歐幾里得函數 void exgcd(int a, int b, int& x, int& y, int& d) { // 用到了引用 ‘&’ if (!b) { d = a, x = 1, y = 0; } else { exgcd(b, a % b, y, x, d); y -= x * (a / b); } } //返回t對p的逆元 int inv(int t, int p) { int d, x, y; exgcd(t, p, x, y, d); return (x % p + p) % p; //x可能為負,也可能過大 } int main() { int m = 7, n = 26; printf("%d", inv(m, n)); return 0; }
.C文件中出現函數參數為引用則出現莫名其妙的錯誤
void InsertSort(SqList &L);error C2143: syntax error : missing ')' before '&'
C++中.h和.cpp的關系
參考:鏈接
1、首先,我們可以將所有東西都放在一個.cpp文件內,然后編譯器就將這個.cpp編譯成.obj,即編譯單元。一個程序可以由一個編譯單元組成,也可以由多個編譯單元組成。如果你不想讓你的源代碼變得很難閱讀的話,就請使用多個編譯單元吧。
2、 一個.cpp對應一個.obj,然后將所有的.obj鏈接起來(通過一個叫鏈接器的程序),組成一個.exe,即程序。如果一個.cpp要用到另一個.cpp定義的函數怎么辦,只需在這個.cpp中寫上它的函數聲明。
3、鏈接器將所有的obj鏈接起來,但是如果碰巧有相同的函數或外部變量怎么辦?C++可以通過一種叫做鏈接屬性的關鍵字來限定,某個函數是屬於整個程序公用的,還是只在一個編譯單元obj里面使用,這些關鍵字就是extern(外部鏈接)和static(內部鏈接)。
4、此時,讓我們說說.h。其實沒有.h,程序也能很好的工作,但是當你發現一個外部鏈接的函數或外部變量,需要許多分聲明,因為只要使用到該函數的單元,就必須寫一份聲明在那個.cpp里面,如果要修改會很麻煩!!!
5、 .h就是為了解決這個問題而誕生的,它包含了這些公共的東西,然后所有需要使用該函數的.cpp,只需要用#include包含進去便可,以后需要修改,只是修改一份內容。
6、請注意不要濫用.h,不要在.h里面寫代碼。#include並不是什么申請指令,只是將指定文件的內容,原封不動的拷貝進來。