常指针、指向常量的指针、指向常量的常指针
生活随笔
收集整理的這篇文章主要介紹了
常指针、指向常量的指针、指向常量的常指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
三者的區分
簡而言之~
常指針:地址不可變,內容可變
指向常量的指針:地址可變,內容不可變
指向常量的常指針:地址不可變,內容不可變
樣例
代碼如下:
#include <iostream> using namespace std; int main() { /************指向常量的常指針(把指針所指的地址聲明為常量,所指向地址中存放的內容也不能改變)************/const char *const name1="chen";//聲明一個指針變量name1,name1指針指向"chen"字符串的首地址/*-------name1【name[0]】--> | c |-------| h |-------| e |-------name1[3]--> | n |-------*/name1[3]='a';//錯誤【name1為指針,指向”chen“字符串的首地址(相當于一個有一個數組name1,name1[3]即表示該數組中下標為3的元素)】name1="lin";//錯誤【該語句表示,將該指針改為指向”lin“字符串的首地址,錯誤】name1=new char[5];//錯誤【該語句表示,new一個char型數組,將該指針改為指向該char型數組的首地址,錯誤】cout<<name1[3]<<endl;//正確,輸出字符n/************常指針(把指針所指的地址聲明為常量,所指向地址中存放的內容可以改變)************/ //聲明一個指針變量name2,該指針為指向字符型數據的常指針,用“chen”字符串的存儲地址初始化該指針char *const name2="abcd";cout<<name2<<endl;name2[3]='q';//正確(地址為常量,該地址內存儲的內容可以改變)name2="lin";//錯誤(地址不可變)name2=new char[5];//錯誤(該語句表示創建一個char型數組,將該數組的首地址賦值name2指針,即使指針指向char[5]數組的首地址,地址不可變,因此該語句錯誤)name2=new char('q');//錯誤(該語句表示new一個char型變量,并初始化該變量為q,將name2指針指向該char型變量的地址,錯誤)/************指向常量的指針(指針所指的地址可以改變,所指向地址中存放的內容不能改變)************/ const char *name3="because"; char x='p'; char y[9]="dgaogd"; name3[2]='s';//錯誤【存儲內容不可改變】 name3=&x;//正確【地址可以改變】 name3=y;//正確【地址可以改變】 name3=y[3];//錯誤【內容不可變】 }總結
以上是生活随笔為你收集整理的常指针、指向常量的指针、指向常量的常指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows7怎么设置鼠标灵敏度 如何
- 下一篇: 暴走的字符串