標準C學習day09 變數和作用域 指標

2021-09-22 08:09:09 字數 2267 閱讀 9644

指標變數也是變數

指標變數只能記錄位址資料

指標變數和普通變數的使用方法完全不同

指標變數的主要作用就是用來找乙個普通

變數的只有記錄了有效位址的指標才能用來找

普通變數(指標變數的使用有前提

條件)指標變數也需要先宣告然後才能使用

宣告指標變數時需要在變數名稱前加*

當乙個指標記錄了某個儲存區的位址以後

就可以說這個指標指向這個儲存區

當乙個指標指向乙個儲存區以後就可以在

指標前使用*操作符,這種寫法就可以

表示指標指向的那個儲存區

通過指標找到的那個儲存區的型別只能是

宣告指標時所提供的型別

int *p_val;

… (讓指標指向某個儲存區)

*p_val(這個儲存區的型別只能是整數型別)

可以在一條語句裡宣告多個同型別指標,

這個時候需要在每個指標變數前

單獨加*

typedef關鍵字可以用來給資料型別起別名,

程式裡可以用別名代替原來的型別名稱

指標型別通常可以起別名

用指標型別別名宣告指標變數的時候就不

需要再加*了

沒有記錄有效位址的指標分為兩類

1.空指標裡固定記錄空位址(null),

這個位址的數值就是數字0

2.其他沒有記錄有效位址的指標都

叫做野指標

程式裡不可以出現野指標

所有指標變數必須初始化

指標初始化的時候*沒有參與賦值過程

指標指向的儲存區可以隨著程式的執行

不斷變化

這個時候可以把指標看做是儲存區的某種

身份或特徵

當乙個指標指向陣列裡第乙個儲存區之後

可以通過這個指標找到陣列裡的每個

儲存區這個時候可以使用指標代表整個陣列

位址資料只能參與以下計算過程

位址 + 整數 位址 - 整數 位址 - 位址

位址加減整數n實際加減的是n個指向

儲存區的大小

int arr[5];

0 1 2 3 4

arr arr + 2

陣列裡第乙個儲存區的位址加下標可以

得到下標對應儲存區的位址

以下兩種寫法可以用來表示陣列裡的儲存區

*(arr + num) 或 *(p_val + num)

其中arr是陣列名稱,p_val是指向

陣列裡第乙個儲存區的指標,num是下標

位址之間做減法結果是乙個整數,這個整數

表示兩個位址之間包含的指向儲存區

的個數int arr[5];

0 1 2 3 4

arr &arr[2]

&arr[2] - arr結果是2

可以使用指標作為迴圈變數依次處理陣列

裡的每個儲存區

在迴圈裡指標應該依次指向陣列裡的每個

儲存區宣告指標變數的時候可以使用const關鍵字

如果在宣告指標變數的時候把const關鍵字

寫在型別名稱前就表示不可以通過這個

指針對它指向的儲存區做賦值,但是可以

對指標本身做賦值.

如果在宣告指標變數的時候把const關鍵字

寫在指標變數名稱前就表示可以通過

這個指針對它指向的儲存區做賦值,但是

不可以對指標本身做賦值

宣告指標變數時可以使用void作為型別名稱

可以把這種指標叫做無型別指標

這種指標沒有告訴我們它指向的儲存區

是什麼型別的

不應該在這種指標前使用*操作符或者

對這種指標進行加減整數的計算

這種指標使用前需要先強制型別轉換成

有型別指標

可以在呼叫函式和被呼叫函式之間傳遞

儲存區(乙個函式把自己的儲存區

給別的函式使用)

只要把儲存區的位址傳遞給別的函式就

可以實現傳遞儲存區的效果

只能使用指標記錄別的函式傳遞過來的位址

陣列做形式引數的時候真正的形式引數其實

是乙個指標,它指向陣列裡第乙個儲存區

宣告指標形式引數的時候盡量使用const

關鍵字無型別指標經常作為形式引數使用

可以通過無型別指標形式引數把任意

型別的儲存區傳遞給被呼叫函式

可以在被呼叫函式裡把儲存區的位址當

返回值,這樣就可以從被呼叫函式

向呼叫函式傳遞儲存區

只有符合生命週期規則的儲存區才可以

在函式之間傳遞(不可以把非靜態

區域性變數儲存區的位址做返回值使用)

python學習系列 day09

一 圖形介面 1 tkinter 2 turtle 二 網路程式設計 1 tcp程式設計 1 客戶端 import socket s socket.socket socket.af inet,socket.sock stream af inet表示利用的ipv4,af inet6表示用ipv6。so...

Day09 學習CSS基礎

在html的頭部用標籤寫css樣式,裡面定義選擇器定義不同的屬性值 一種選擇器 選擇所以h1標籤 color顏色屬性為red h1style rel stylesheet href css style.css style color yellow 標題h1 哪種方式生效根據就近原則,先執行的會被後執...

python學習筆記day09 函式

函式的定義和函式的呼叫不是一回事,程式執行時,遇到定義函式,只會執行定義函式名處,裡面的函式體這個時候是不會執行的 只有到呼叫函式處才會執行裡面的函式體 沒有返回值 無 return 返回none 只有 return 返回none return none 返回none 有返回值 可以返回任意資料型別...