int a =
10;int
*p =
&a;
初始化必須是用位址給它初始化
使用:*p = 250 //指標的解引用/間接引用
*p:將p 變數的內容取出,當成位址看待,找到該位址對應的記憶體空間
如果做左值:存資料到空間中
如果做右值:取出空間中的內容
void *:萬能指標/泛型
指標的大小與型別無關,只與當前使用的平台架構有關
為了杜絕野指標,有了空指標
int
*p =
null..
..if(p !=
null
)
int
*p;*p =
1000
;嚴重性 ** 說明 專案 檔案 行 禁止顯示狀態
錯誤 c4700 使用了未初始化的區域性變數「p」 day05 c:\users\administrator\documents\visual studio 2015\projects\day05\day05\野指標和空指標cpp.cpp 11
2、p變數有乙個值,但該值不是可訪問的記憶體區域
int
*p =10;
*p =
2000
;
0-255這塊位址是確定留給作業系統的,會出現寫入許可權錯誤
指標必須要用位址來賦值
【杜絕野指標】
陣列名是位址常量——它不可以被修改,也就是說不可以被賦值
指標是變數,可以用陣列名給指標賦值
取陣列元素:a本質上就是*(a+2)
取陣列元素
int
*pint arr=
arr[0]
==*(p+0
)== p[0]
==*(p+0
)
const
int a =5;
int*p =
&a;*p =
650;
const int p;
可以修改p,但是不能修改p
int const p;
同上int * const p;
可以修改p,但是不能修改p
const int *const p;
兩個都不能改了
總結:const向右修飾,被修飾的部分即為唯讀
常用在函式形參內,用來限制指標所對應的記憶體空間為唯讀
1、指標是變數,陣列是常量
2、sizeof(指標) ==> 4/8 取決於平台
sizeof(陣列) ==》陣列的實際大小
3、指標++的操作:
a[0] == *(a+0)這裡的a是常量是不動的,所以要取元素的話,得向後移
int *p = a;
*p == (p+0) == p[0] == a[0]
p++ p是變數,是可以動的,p++了之後就指向了下乙個元素,要取出來的話直接p就行了
自學C day11 陣列做函式引數
三種寫法均可 void bubblesort int arr 10 void bubblesort int arr void bubblesort int arr 陣列做函式引數時,傳遞的不再是整個陣列,而是陣列的首位址,等價於 arr,大小就是乙個指標的大小,所以求sizeof就會出問題了 在自定...
C Day4 指標和結構體
二 結構體 include using namespace std intmain 32位作業系統 64位作業系統 4位元組 所有型別int float double 8位元組 所有型別 int s int 0x1124 cout 指標的值 sconst既修飾指標又修飾常量。const int co...
c day3 指標,棧記憶體,堆記憶體
在c 中指標就是 記憶體位址 十六進製制的資料 它記錄著記憶體空間的位址,大小是8個位元組 指標的定義 int a 10 int pint pint a 也可以 int pint a 其中 pint 指標變數儲存的就是 a變數在記憶體中的位址,可以通過 pint 解引用來效果 變數a 的值 pint...