C++ const與指標的結合
區別方法:
如果const位於*的左側,則const就是用來修飾指標所指向的變數,即指標指向為常量;如果const位於*的右側,const就是修飾指標本身,即指標本身是常量。
換句話說,如果const靠近資料型別,就是修飾該型別的變數為常量 :
const int x=20;//定義int型別的符號常量x,x=10
const int *p=&x;//定義指向常量的指標p,可以改變指標的指向,但是不能通過指標來改變 x中的值
如果:const靠近指標,就是定義這個指標為常指標
例:
int * const p2=&x;//定義常指標p2,不可改變指標的指向(常指標),但可以通過指標來修改x中的值
如果,有兩個const一起修飾:
例: const int * const p3=&x;//不可以修改指標的指向,也不能修改通過指標修改變數的值
#include <iostream>
using namespace std;
int main()
{
int x=10;
int y=50;
//左側修飾變數不可變
//指向常量的指標
const int *p=&x;
cout<<"p="<<p<<" *p="<<*p<<endl;
// *p=20;//改變指標指向的變數,出錯:error C2166: l-value specifies const object
p=&y;//指標裡面的值是可以變的。
cout<<"p="<<p<<" *p="<<*p<<endl;
//常指標
int * const p2=&x;//const靠近指標p2修飾指標p2裡面的地址值不可變,
cout<<"p2="<<p2<<" *p2="<<*p2<<endl;
// p2=&y;//不能修改,常指標的指向 error C2166: l-value specifies const object
*p2=30;//可以修改常指標指向的變數的值
cout<<"p2="<<p2<<" *p2="<<*p2<<endl;
//定義指向常量的常指標
const int * const p3=&x;
p3=&y;//不可以改變常指標的指向。
*p3=100;//不可改變常指標指向的常量的值。
//總結:
//const靠近資料型別就是修把該型別的變數變成常量,
//const靠近指標就是修飾把這個指標變成常指標
return 0;
}
相關推薦
C++ const與指標的結合
區別方法: 如果const位於*的左側,則const就是用來修飾指標所指向的變數,即指標指向為常量; 如果const位於*的右側,const就是修飾指標本身,即指標本身是常量。 換句話說,如果con
const修飾符、const與指標一起使用(C++學習筆記 6)
一、 在C++中使用const修飾符來定義常量。(const來自單詞constant,是常量的意思) 用法:const 型別 常量名 = 表示式; 例如:const int LIMIT = 100; 這個常量LIMIT是有型別的,佔用儲存單元,有地址,可以用指標指向它,但不能修改它。
C++中const與指標、引用的總結
C++中函式的引數相比C語言中的函式引數要複雜的多,其中主要的原因是C++中引入了引用以及const限定符。這兩個物件的引入,使得C++中的函式引數變得異常的複雜多變,每一種型別都具有比較適合的使用範圍。 一,引用 引用是物件的別名,必須在初始化的過程中與一個具體的物件繫
C++ const 引用 指標答疑
常變數 const int a 常引用 const int &a 常指標 const int *a const * int a 用法1:常量 取代了C中的巨集定義,宣告時必須進行初始化(!c++類中則不然)。const限制了常量
c++引用與指標的區別
★ 相同點: 1. 都是地址的概念; 指標指向一塊記憶體,它的內容是所指記憶體的地址;引用是某塊記憶體的別名。 ★ 區別: 1. 指標是一個實體,而引用僅是個別名; 2. 引用使用時無需解引用(*),指標需要解引用;
const與指標:指向const的指標與const指標
指標,可以說是C語言程式設計的掌上明珠,而將const應用於指標,會產生一些挺微妙的現象。 指向const的指標 第一種用法是令指標指向一個常量,稱之為指向const的指標,可以防止使用該指標修改所指向物件的值; int age=40; const int *p
const與指標:指向const的指標與const指標的區別
指標,可以說是C語言程式設計的掌上明珠,而將const應用於指標,會產生一些挺微妙的現象。 指向const的指標 第一種用法是令指標指向一個常量,稱之為指向const的指標,可以防止使用該指標修改所指向物件的值; int age=40; const int *pt=&
C++陣列與指標
一、一維陣列 1.1宣告並初始化一維陣列 type 陣列名[整型常量表達式]={陣列元素} 宣告時可以不指明陣列長度,編譯器將根據初始化列表的長度作為陣列長度 若初始化列表的初始值數少於元素數目,則其餘元素均初始化為0 1.2使用一維陣列 陣列名[下標],從0開始,
c語言與指標——(二)指標變數的定義與賦值
由上一節,我們知道了,指標就是地址,而變數的指標就是變數的地址,存放變數地址的變數就是指標變數。指標變數可以指向另一個變數,在程式中使用" * "來表示這種指向關係。 1.指標變數的定義 指標的定義依然遵循先定義後使用的原則,在使用前必須先定
Linux C----陣列與指標
1、陣列陣列:陣列是一種複合資料型別,它由一系列形同型別的元素組成。例:定義一個由5個int型元素組成的陣列 count:int count [5]. 注意:1、對於同一陣列,其元素的資料型別是相同的。 2、陣列名書寫規則應符合識別符號書寫規則。
const與指標及初始化
1.常量本身必須初始化,因此對於本身是常量的指標,必須初始化,比如int* const p=&a; 2.對於指標本身不是常量,但是指向的物件是常量的指標,可以不初始化,比如const int *p、int const *p; const是一個C語言的關鍵字,它
C++引用與指標的關係
(1)引用總是指向一個物件,沒有所謂的 null reference .所有當有可能指向一個物件也由可能不指向物件則必須使用 指標. 由於C++ 要求 reference 總是指向一個物件所以 reference要求有初值. String & rs = stri
c++引用與指標的區別(著重理解)
★ 相同點: 1. 都是地址的概念; 指標指向一塊記憶體,它的內容是所指記憶體的地址;引用是某塊記憶體的別名。 ★ 區別: 1. 指標是一個實體,而引用僅是個別名; 2. 引用使用時無需解引用(*),指標需要解引用; 3.
C++中const與引用,指標之間的關係要點
一、const關鍵字 1、有時我們希望定義這樣的一個變數,它的值不能被改變。這時就可以在定義變數時加上const關鍵字。例如 const int bufSize=512; const型別變數可以進行大部分與非const型別變數相同操作,主要的限制就是不可以在const型別的物件上執
c語言程式設計進階week3:刪除字串中的子串(字串與指標的完美結合)
題目來源自mooc:C語言程式設計進階,僅供個人學習參考使用 #include <stdio.h> #include <string.h> int main(){
C++ define與const
編譯期 多個 簡單的 存儲空間 const常量 ons efi 指針變量 錯誤 C++中不但可以用define定義常量還可以用const定義常量,它們的區別如下: 用#define MAX 255定義的常量是沒有類型的,所給出的是一個立即數,編譯器只是把所定義的常量值與
《c與指標》第13章課後習題4
#include <stdio.h> #include <stdlib.h> #include <string.h> int arry[4] = { 6, 2, 3, 1 }; int cmp ( void * a, void * b) { return
【C語言】一維陣列、二維陣列與指標
一維陣列和指標: 1、一維陣列名: 對於這樣的一維陣列:int a[4]; a作為陣列名就是我們陣列的首地址, a是一個地址常量 . 首先說說常量和變數的關係, 對於變數來說, 用箱子去比喻再好不過了, 宣告一個變數就宣告一個箱子,比如我們開闢出一個蘋果型別的箱子, 給這個變
C++的頂層const與底層const
首先:頂層const表示指標本身是個常量,底層const表示指標所指的物件是一個常量。更一般的,頂層const可以表示任意的物件是常量,這一點對任何資料型別都適用。底層const則與指標和引用等複合型別的基本型別部分有關。 書上的一些例子: int i = 0; int *const p
C語言 指標基礎篇 陣列,函式與指標的運用 2 14
下面看看如何在函式中運用指標吧 下面是往函式傳入指標的簡單操作,不是傳入陣列的。判斷一個a是否大於b是的話給,是的話對其進行操作,不是的話就直接返回。 1 #include <stdio.h> 2 int main(){ 3 int num1,num2,*p1,