第十七課 C指標(概述)

2021-08-09 04:37:08 字數 2424 閱讀 9265



第十七課、c指標(概述)

17.1

、什麼是記憶體

通過指標,可以簡化一些

c 程式設計任務的執行,還有一些任務,如

動態記憶體分配

,沒有指標是無法執行的。所以,想要成為一名優秀的

c 程式設計師,學習指標是很有必要的。

每乙個變數都有乙個記憶體位置,每乙個記憶體位置都定義了可使用連字型大小(&

)運算子訪問的位址,它表示了在記憶體中的乙個位址。

eg#include

<

stdio.h

>

intmain()

結果:var1

0x7fff5cc109d4

var2

0x7fff5cc109de

17.2

、什麼是指標

指標是乙個變數,其值為另乙個變數的位址,即,記憶體位置的直接位址。

就像其他變數或常量一樣,必須在使用指標儲存其他變數位址之前,對其進行宣告。指標變數宣告的一般形式為:

type

*var

-name;

在這裡,type

是指標的基型別,它必須是乙個有效的

c 資料型別,var-name

是指標變數的名稱。

用來宣告指標的星號

* 與乘法中使用的星號是相同的。但是,在這個語句中,星號是用來指定乙個變數是指標。

以下是有效的指標宣告:

int*ip

; /*

乙個整型的指標*/

double*dp

; /*

乙個double

型的指標*/

float*fp

; /*

乙個浮點型的指標*/

char*ch

; /*

乙個字元型的指標*/

所有指標的值的實際資料型別

,不管是整型、浮點型、字元型,還是其他的資料型別,都是一樣的,都是乙個代表記憶體位址的長的十六進製制數。不同資料型別的指標之間唯一的不同是,指標所指向的變數或常量的資料型別不同。

17.3

、如何使用指標

使用指標時會頻繁進行以下幾個操作:定義乙個指標變數、把變數位址賦值給指標、訪問指標變數中可用位址的值。這些是通過使用

一元運算子

*來返回位於運算元所指定位址的變數的值。

下面的例項涉及到了這些操作:

eg

#include

<

stdio.h

>

intmain()

結果:address

of var

variable

:bffd8b3c

address

stored

inip variable

:bffd8b3c

value

of *

ip variable:20

17.4

、c中的null指標

在變數宣告的時候,如果

沒有確切的位址可以賦值,為指標變數賦乙個

null

值是乙個良好的程式設計習慣。賦為

null

值的指標被稱為指標。

null

指標是乙個定義在標準庫中的

值為零的常量。

請看下面的程式:

eg

#include

<

stdio.h

>

intmain()

結果:ptr

的值是0

在大多數的作業系統上,程式

不允許訪問位址為

0 的記憶體

,因為該記憶體是作業系統保留的。然而,記憶體位址

0 有特別重要的意義,

它表明該指標不指向乙個可訪問的記憶體位置

。但按照慣例,如果指標包含空值(零值),則假定它不指向任何東西。

如需檢查乙個空指標,您可以使用

if 語句,如下所示: if

(ptr

)/*

如果p

非空,則完成*/

if(!ptr

)/*

如果p

為空,則完成*/

JAVA第十七課

一 序列化與反序列化 序列化是將物件的狀態寫入特定的流中的過程 反序列化則是從特定的流中獲取資料重新構建物件的過程 二 實現序列化的步奏 1 實現serilizable介面。2 建立物件輸出流 3 呼叫writeobject 方法將物件寫入檔案 4 關閉物件輸出流 三 常見異常 notseriali...

Linux第十七課

一 squid 八爪魚單純的 不加密 埠號為3128 支援http ftp ssl等多種協議的資料快取,可以基於訪問控制列表 acl 和訪問許可權列表 arl 執行內容過濾與許可權管理功能。正向 模式 一般用於企業區域網之中,讓企業使用者統一地通過squid服務訪問網際網路資源,可以在一定程度上減少...

python第十七次課 2018 5 11

orm思想 需求 如果我們從資料庫查出來幾條資料,需要阿紫python表示出來 student id name age grader 1,ling 18,m 59 2,jack 16,m 89 3,ccj 17,m 69 tuple 資料不可變 想知道表的結構,int varchar for x i...