C語言筆記 六 指標 一

2021-09-29 21:56:56 字數 2992 閱讀 7644

記憶體模型

常量區棧區

**區常量指標 和 指標常量

根據指標指向的位置的不一樣,指標也是有型別。

指標定義和使用
#include

intmain()

int *p;定義乙個int *型別指標,p只能指向int型位址

指標在函式中的簡單應用

用指標在函式中修改變數的值

#include

void

fun1

(int x,

int y)

//交換兩個變數的值

void

fun2

(int

* x,

int* y)

//交換兩個變數的值

intmain()

列印結果:

原引數:3,4

fun1

():3,4

fun2

():4

,3

有人說是五區,把全域性靜態常量區分開,這個我就不深究

記憶體四區

**區存放**二進位制

全域性靜態常量區

全域性變數、靜態變數,字串常量

棧區函式內部定義的變數,包括主函式裡面定義的變數

堆區手動申請釋放,指標管理malloc、free

堆區

標頭檔案:#include

#include

// for _max_path definition

#include

intmain()

return0;

}

這是乙個官方提供的malloc文件介紹

需要說明的是:

malloc是乙個函式,返回值是void*型別的指標,需要強轉成其他型別才能使用

malloc申請了一塊記憶體後需要判斷是否申請成功,並且用完之後要釋放。

標頭檔案#include記得加上

#include

#include

intmain()

printf

("申請的記憶體空間大小為:%d\n"

, size)

; p =

(int*)

realloc

(p,sizeof

(int)*

100)

; size =

_msize

(p);

printf

("重新申請的記憶體空間大小為:%d"

, size)

;free

(p);

return0;

}

列印結果:

申請的記憶體空間大小為:40

重新申請的記憶體空間大小為:400

_msize() 返回在堆中分配的記憶體塊的大小,返回值型別為 size_t

比malloc多了初始化操作 申請記憶體是比malloc要慢

free

(p);

p=null

;

野指標:

什麼是野指標?野指標就是指標指向的位置是不可知的(隨機的、不正確的、沒有明確限制的)

int

*p;//定義之後未初始化是乙個野指標

printf

("%d"

,*p)

;

int

*p =

(int*)

malloc

(sizeof

(int))

;free

(p);

//釋放完之後未置空 p=null;

printf

("%d"

,*p)

;

規避:
int

*p=null

;

free

(p);

p=null

;

常量區
常量區內容不可以修改

char

*p="hello world"

;//定義指標指向常量區 "hello world"在常量區

#include

#include

intmain()

棧區

棧區和堆區的區別:

所有在函式內部定義的變數,包括主函式裡面定義的變數,都儲存在棧區。

優點就是自動分配**,缺點是大小太小

**區

字面意思,**存放的區域,了解一下就可以。

關鍵字:const

const 不可修改

const

int y =2;

//const修飾的變數定義的時候必須賦值 並且賦值之後不可修改

常量指標

const 修飾 *p

int const* p;

const int* p;

#include

intmain()

指標常量

const 修飾 p

int* const p;

#include

intmain()

C語言筆記系列 六 指標

指標的值是位址,大多系統內部由無符號整數表示,但它是一種新的資料型別,不是整數型別。int n 20 printf d p n,n 分別輸出值和位址 四種宣告等價 intsum int a,int n intsum int int intsum int a,int n intsum int int ...

C語言隨筆(六)指標

指標,就是指記憶體位址,指標變數是用來存放記憶體位址的變數,不同型別的指標變數所占用的儲存單元長度是相同的,而存放資料的變數因資料的型別不同,所占用的儲存空間長度也不同。有了指標以後,不僅可以對資料本身,也可以對儲存資料的變數位址進行操作。定義指標 如下 int a 100 int p 定義乙個整型...

C語言基礎知識(六)(指標)

一 宣告和定義的區別 建立儲存空間的宣告稱為定義,不需要建立儲存空間的宣告稱為宣告。二 變數指標和指標變數 乙個變數的位址成為變數的指標。如果有乙個變數專門存放另一變數的位址,稱它為指標變數,也就是說指標變數的值是位址,例如 int pointer。指標變數的賦值 定義的時候初始化 int a 5 ...