卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

C 中形參類型詳解與實例分析

緒論在C 編程中,函數(shù)的形參可以分為非引用形參和引用形參,其中非引用形參包括非const形參和const形參。非const形參以實參的副本初始化,不會修改實參的值;而引用形參直接訪問實參對象并可以

緒論

在C 編程中,函數(shù)的形參可以分為非引用形參和引用形參,其中非引用形參包括非const形參和const形參。非const形參以實參的副本初始化,不會修改實參的值;而引用形參直接訪問實參對象并可以改變實參內(nèi)容。通過使用const限定符,可以對這兩種形參進行更精確的控制。

非const非引用形參

對于普通的函數(shù)形參來說,以實參副本初始化形參將改變實參的值。然而,在非const非引用形參中,無論實參是否添加const關鍵字,結果都是一樣的。這是因為非const非引用形參本身不會改變實參的值。

```cpp

include

include

using namespace std;

int use_ptr1(int val) {

return val;

}

int main() {

int v1 1;

cout << "v1初值: " << v1 << endl;

use_ptr1(v1);

cout << "v1加1操作后: " << v1 << endl;

const int v2 2;

cout << "v2初值: " << v2 << endl;

use_ptr1(v2);

cout << "v2加1操作后: " << v2 << endl;

getchar();

return 0;

}

```

const非引用形參

在const非引用形參中,防止修改從實參傳遞的形參值,因此只能使用形參而不能修改形參。和非const非引用形參類似,對于實參添加const與否結果相同。

```cpp

include

include

using namespace std;

int use_ptr2(const int val) {

return val;

}

int main() {

int v1 1;

use_ptr2(v1);

cout << "v1: " << v1 << endl;

const int v2 2;

use_ptr2(v2);

cout << "v2: " << v2 << endl;

getchar();

return 0;

}

```

非const引用形參

非const引用形參直接關聯(lián)到綁定對象,對形參的修改就是對實參的修改。通常在需要在函數(shù)中修改實參值或以大型對象作為實參傳遞時會使用非const引用形參。

```cpp

include

include

using namespace std;

int use_ptr5(int val) {

return val;

}

int main() {

int v1 1;

int *p1 v1;

use_ptr5(v1);

cout << "v1: " << v1 << endl;

getchar();

return 0;

}

```

const引用形參

const引用形參可以由非const或const實參初始化,也可以傳遞右值或需要類型轉換的對象,但是不可修改其值。實參添加const與否對結果沒有影響。

```cpp

include

include

using namespace std;

int use_ptr6(const int val) {

return val;

}

int main() {

int v1 1;

int v2 2;

use_ptr6(v1);

use_ptr6(v2);

getchar();

return 0;

}

```

總結

- 非const非引用形參和const非引用形參均可由const或非const實參初始化;

- 非const引用形參沒有const限定符,實參必須是非const類型;

- const引用形參可由const或非const實參初始化;

- 非const引用形參在使用上不夠靈活,通常建議少用非const引用形參,多用const引用形參。

程序實例

以下為一個完整的程序示例,展示不同類型的形參的使用和限制。

```cpp

include

include

using namespace std;

int use_ptr1(int val) {

return val;

}

int use_ptr2(const int val) {

return val;

}

void ptrswap1(int *s1, int *s2) {

int *temp s2;

s2 s1;

s1 temp;

}

void ptrswap2(const int *s1, const int *s2) {

const int *temp s2;

s2 s1;

s1 temp;

}

int main() {

int v1 1, v2 2;

int *p1 v1;

int *p2 v2;

ptrswap1(p1, p2);

cout << *p1 << " " << *p2 << endl;

const int *p3 v1;

const int *p4 v2;

// ptrswap2(p3, p4); // Error: 不能傳入指向const對象的指針

cout << *p1 << " " << *p2 << endl;

system("pause");

return 0;

}

```

通過以上的文章內(nèi)容和代碼示例,我們可以更好地理解C 中各種形參類型的差異和應用場景。

標簽: