C語言學習筆記 指標與位址

2021-05-22 06:52:24 字數 1363 閱讀 2061

機器的儲存器通常由連續編號的儲存單元序列組成,這些儲存單元可以以單個或者相連成組的方式操縱;通常情況下,乙個位元組可以表示乙個字元,一對相連的儲存單元可以表示乙個短整數,而四個相鄰的位元組則構成乙個長整數;指標是能存放乙個位址的一組儲存單元,從本質上講,指標是乙個變數,而它的變數值是所指向物件(可以是變數、陣列、結構、函式等)的位址;指標一般佔四個位元組長度的儲存單元,所以sizeof(p)(p是指標)的值為4.

一、指標的宣告

int *pointer;

該語句將建立乙個指向int型的指標變數pointer但為對它進行初始化,不初始化指標是很危險的,因為它往往指向的是不確定的地方;所以總是應該在宣告指標的時候就對它進行初始化。例如:

int *pointer =null;或者int *pointer =0;

這樣進行初始化指標,就使它不會指向任何記憶體;

二、通過指標訪問變數值

int number =15;

int *pointer = &number;

int result = 0;

result = *pointer +5;

表示式*pointer將計算存放在 指標存放的位址 的變數值;

其中,*叫做 間接運算子,又叫做 提取運算子;

例項**:

#include

int main(int argc,char *argv)

{int number = 0;

int *pointer =null;

number =10;

printf("number's address is:%x./n" , &number);

printf("number's value   is:%d./n" , number);

pointer = &number;

printf("pointer's value   is:%x./n" , pointer);

printf("pointer's address is:%x./n" , &pointer);

printf("pointer's size    is:%d./n" , sizeof(pointer));

printf("value pointed to  is:%d./n" , *pointer);

程式執行結果

number's address is:12ff7c.

number's value   is:10.

pointer's value   is:12ff7c.

pointer's address is:12ff78.

pointer's size    is:4.

value pointed to  is:10.

press any key to continue

C語言學習筆記 指標與陣列

在c語言中,陣列與指標的關係非常密切,陣列下標所能完成的任何運算都可以用指標來實現 一般而言,指標運算比陣列下標運算的速度快,但用指標實現的程式理解起來稍微有一些難度 一 指標與一維陣列 int a 10 定義了乙個大小為10的整型陣列a int pa a 0 將指標pa指向陣列a的第0個元素,即p...

C語言學習筆記 函式與指標

1 c 語言中的函式有自己特定的型別,這個型別由返回值 引數型別和引數個數共同決定。如 int add int i,int j 的型別為 int int,int 2 c 語言中通過 typedef 為函式型別重新命名 typedef type name parameter list 如 typede...

C語言學習筆記 指標

若觸過組合語言,那麼理解學習c語言中指標就很簡單了。指標,在彙編裡面的表現形式,無非就是定址,直接定址和間接定址。先來學習下,c語言中的4大類資料型別 基本型別 int,long,float,char 構造型別 陣列,結構體 struct,聯合體 union,列舉型別 enum 指標型別 int l...