c++中的void指针和const指针
生活随笔
收集整理的這篇文章主要介紹了
c++中的void指针和const指针
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在c++中可以聲明指向void類型的指針,指向void類型的指針稱為void指針,此外,在聲明指針時(shí),還可以用關(guān)鍵字const進(jìn)行修飾,用關(guān)鍵字const修飾的指針稱為const指針。1、void指針一般來說,只能用指向相同類型的指針給另一個(gè)指針賦值,而在不同類型的指針之間進(jìn)行賦值是錯(cuò)誤的。//***********************************************************int?a,b;int?*p1=&a,*p2=p1;???//it's?rightint?a;int?*p1=&a;double?*p2=p1;???????//it's?wrong//***********************************************************注意:上述語句中的兩個(gè)指針p1,p2指向的類型不同,因此,除非進(jìn)行強(qiáng)制類型轉(zhuǎn)換,否則它們之間不能相互賦值void指針是一個(gè)特例,C++語言允許使用空類型(void)指針,即不指定指向一個(gè)固定的類型,其定義格式為:void?*p他表示指針變量p不指向一個(gè)確定的類型數(shù)據(jù),它的作用是用來存放一個(gè)地址,void指針?biāo)梢灾赶蛉魏晤愋偷?/font>c++數(shù)據(jù),也就是說,可以用任何類型的指針直接給void指針賦值。不過,如果需要將void指針的值賦值給其他類型的指針,則需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。比如:int?a;int?*p1=&a;void?*p2=p1;int?*p4=(int?*)p2;2、const指針如果在指針定義前加上關(guān)鍵字const,就包含一些特殊含義,而關(guān)鍵字const放在不同的位置表示的意義也不相同,主要如下:關(guān)鍵字const放在指針類型前,就是聲明一個(gè)指向常量的指針。(const?*p)此時(shí),在程序中不能通過指針來改變它所指向的值,但是指針本身的值可以改變,即指針可以指向其他數(shù)據(jù)。關(guān)鍵字const放在“*”號(hào)和指針名之間,就是聲明一個(gè)指針常量(也稱常指針)(*?const?p)。因此,指針本身的值不可以改變,也即它不能再指向其他數(shù)據(jù),但它所指向的數(shù)據(jù)的值可以改變。在指針類型前和“*”號(hào)和指針名之間都加關(guān)鍵字const,(const?*?const?p),則就是聲明一個(gè)指向常量的指針常量,指針本省的值不可以改變,它所指向的值也不能通過指針改變。//*********************************************
#include?<iostream>using?namespace?std;int?main(){int?a=1;int?*p1=&a;void?*p2=p1;int?*p3=(int?*)p2;cout<<"*p3=?"<<*p3<<endl;const?int?*p4;?????????//A?pointer?to?a?pointer?constantp4=&a;int?*?const?p5=&a;?????//A?pointer?constantconst?int?*?const?p6=&a;//A?pointer?to?a?constant?pointer?constantcout<<"*p5=?"<<*p5<<endl;cout<<"*p6=?"<<*p6<<endl;cout<<"p4=?"<<*p4<<endl;cout<<"p4=?"<<p4<<endl;return?0;}//***************************************************????
#include?<iostream>using?namespace?std;int?main(){int?a=1;int?*p1=&a;void?*p2=p1;int?*p3=(int?*)p2;cout<<"*p3=?"<<*p3<<endl;const?int?*p4;?????????//A?pointer?to?a?pointer?constantp4=&a;int?*?const?p5=&a;?????//A?pointer?constantconst?int?*?const?p6=&a;//A?pointer?to?a?constant?pointer?constantcout<<"*p5=?"<<*p5<<endl;cout<<"*p6=?"<<*p6<<endl;cout<<"p4=?"<<*p4<<endl;cout<<"p4=?"<<p4<<endl;return?0;}//***************************************************????
轉(zhuǎn)載于:https://blog.51cto.com/yuzhou133/457031
總結(jié)
以上是生活随笔為你收集整理的c++中的void指针和const指针的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据安全管理规定
- 下一篇: 新增记录行(ecshop)