cpp


.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並不是什么申請指令,只是將指定文件的內容,原封不動的拷貝進來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM