再論C 中的const和引用

2021-10-23 22:20:34 字數 2619 閱讀 1662

今天給大家分享一下這段時間學習c++的總結學習:c++裡面的const關鍵字和引用。

一、const關鍵字的總結

1、const什麼時候為唯讀變數,什麼時候又是常量呢?

(1)const常量的判別規則:

(2)const引用的型別與初始化變數的型別

**版本一:

#include int main()

輸出結果:

root@txp-virtual-machine:/home/txp# ./a.out

x = 1

rx = 5

nrx = 5

&x = 0x7ffcc5fa8abc

&rx = 0x7ffcc5fa8abc

&nrx = 0x7ffcc5fa8abc

**版本二:

#include int main()

輸出結果:

root@txp-virtual-machine:/home/txp# ./a.out

y = 8

p = 0x7ffd78559684

**版本三:

#include int main()

輸出結果:

root@txp-virtual-machine:/home/txp# ./a.out

y = 8

p = 0x7ffc5d651250

z = 9

p = 0x7ffc5d651254

**版本四:

#include int main()

結果輸出:

root@txp-virtual-machine:/home/txp# ./a.out

c = a

rc = a

trc = c

二、引用的總結:

1、引用與指標有什麼關係,以及如何理解"引用的本質就是指標常量"?

(1)指標是乙個常量:

(2)引用只是乙個變數的新名字:

(3)從使用c++語言的角度來看:

(4)從c++編譯器的角度來看:

(5)在工程專案開發中:

**實踐:

版本一:

#include int a = 2;

struct sv;

int main()

;  printf("&sv.x = %p\n",&sv.x);

printf("&sv.y = %p\n",&sv.y);

printf("&sv.z = %p\n",&sv.z);

delete pc;

return 0;

}

輸出結果:

root@txp-virtual-machine:/home/txp# ./a.out

&sv.x = 0x601050

&sv.y = 0x7ffee11ba794

&sv.z = 0x1cfd010

版本二:

#include int a = 2;

struct sv;

int main()

;  int& array = ;//陣列中的每個元素是引用就不可以;error: declaration of 『array』 as array of references;c++ 天生要支援 c 語言,c 語言中陣列中的每個元素在記憶體中是順序存放的,位址是遞增的,所以在 c++ 中也要相容這個特性,而在 c++ 中唯有引用陣列破快了這個特性,所以說 c++ 中不支援引用陣列;&array[1] - &array[0] !=  expected ==> 4

printf("&sv.x = %p\n",&sv.x);

printf("&sv.y = %p\n",&sv.y);

printf("&sv.z = %p\n",&sv.z);

delete pc;

return 0;

}

輸出結果:

root@txp-virtual-machine:/home/txp# g++ test.cpp

test.cpp: in function 『int main()』:

test.cpp:16:14: error: declaration of 『array』 as array of references

int& array = ;

三、總結:

好了,今天的分享就到這裡,如果文章中有錯誤或者不理解的地方,可以交流互動,一起進步。我是txp,下期見!

c 中const和引用

c 和c語言裡面的const 1 在c語言裡面的const修飾的量是乙個常變數,不能作為左值,但是可以通過洩露指標和引用去修改它,int a 10 int p a 洩露了常量的引用。但是 int a 10 const int p a 是正確的。因為a本來就是普通的變數,而通過常量 p不能改變它,但a...

C 中const引用和非const引用的使用注意

今天學習時突然有疑惑,c 有了指標為何還要設計引用呢?後來看到一篇部落格豁然開朗 為什麼 c 有指標了還要引用?總結一下 更加簡潔好看了 由於引用必須被初始化,並且之後也無法重新繫結其他物件,這樣就更安全了 為了操作符過載,比如部落格中那個過載 的例子 並且,在了解了這些之後,對引用的一些其他特性也...

C 中的引用與const

c 中引用與const的組合很容易引起困擾,這篇文章將對這一問題進行簡要介紹。首先,要明確一些原則 1 const是限定符,可以放在引用符 指標符 的後面,比如 const,const 而int是型別符,不能放在 和 的後面,比如 int,int都會出錯。2 引用必須初始化,且初始化後不能更改繫結,...