帶你認識指標 C語言的靈魂(一)

2021-07-24 23:39:59 字數 2048 閱讀 7105

最近複習考研的知識,有機會研究一下c語言的指標,今天就總結一下有時候讓我們愛的要死,有時候也恨得要死的指標,到底是什麼?書裡指標那章的序言說到了,不掌握指標就是沒有掌握c的精華,word指標看來真的有他的厲害之處啊。話不多說,開始總結。

第一篇總結解決一下什麼是指標的問題,做了乙個小demo簡要說明指標的用法。

指標是乙個值為記憶體位址的變數(或資料物件)

自己的理解:上邊的定義簡單扼要的告訴我們指標就是變數,變數又是什麼呢?變數就是一塊記憶體,就是乙個位址,說白了指標就是儲存記憶體位址的變數,有的書上也說了,指標就是位址。為什麼要有指標呢?因為c語言的一大特點就是可以直接對物理操作,厲害了我的哥,所以說指標是c語言的一大靈魂嘛。

1.首先定義了乙個整型的變數,也就是分配了乙個名叫year的記憶體空間,存放的內容是2016

2.定義了乙個整型的指標變數,將year的位址付給了變數,也就是右邊的指標指向左邊的變數,因為現在指標裡邊存放的是year的位址,&這個符號是取位址的意思,下邊會講到

型別 + "*" + 變數名  = 指標

注:

1.c語言中null被定義為常量,第一行代表

指標的初值設為空,表示指標不指向任何位址,不加有可能指向任意的位址

2.指標命名最好裡邊帶有"p"

int  *ptr=null;    // 等價於void *ptr  

int *ptr_num;

char *ptr_name;

float *money_ptr;

double *p_price;

int num=9;

int * ptr_num=#

//取指標1的位址賦給指標2

int * ptr_num2=&ptr_num;

//%p指標佔位符 % x 16進製制佔位符

printf("num變數的位址是:%p\t%x\n",ptr_num,&num);

//使用指標修改變數值

*ptr_num=9999;//找到位址所指的記憶體位址,把這個位址的值改為9999

上邊的**主要演示了一下:取變數位址和取位址對應變數的值,這兩個操作,乙個用的&,後乙個使用*

上邊**也展示了如果通過操縱指標來改變變數的值,我們在看看記憶體是怎麼體現的

綜合的小demo:

int num1=1024;

int num2=2048;

int * ptr1;

int *ptr2;

ptr1=&num1;

ptr2=&num2;

//將變數1的值,賦給變數2

// num2=num1;*ptr2=*ptr1; 等價寫法,可以把後者看成變數

//直接操作指標

ptr2=ptr1; //值沒有變,位址變了

printf("重新賦值後:\n");

*ptr2=1111;

printf("重新賦值後:\n");

了解乙個概念就是反覆的去實踐,看看不同情況下的操作會得出什麼樣的結果,概念在實踐中體會的會更加的深刻

指標 C語言的靈魂

1.2指標的型別 指標的型別 去掉變數名,剩下的的就是指標型別 int p int 整形指標 int arr 3 int 3 整形陣列指標 int p int a,int b int int a,int b 返回值為整形的函式指標 int arr 4 int 4 指標陣列,指向陣列的指標 指標所指向...

帶你認識C 中的this指標

this指標的初步認識 this指標的由來 乙個學生可以有多本書一樣,而這些書都是屬於這個同學的 同理,如果有很多個同學在一起,那麼為了確定他們的書不要拿混淆了,最好的辦法我想應該就是每個同學都在自己的書上寫上名字,這樣肯定就不會拿錯了。同理,乙個物件的多個成員就可看作是這個物件所擁有的書 而在很多...

認識C語言指標(一)

說到指標,就會出現一些複雜型別,如果對這些複雜型別不太了解,在用到指標有時就會比較懵。乙個型別裡面會有很多運算子,其優先順序和運算優先順序一樣,只需要遵循乙個原則 從變數名處起,根據運算子優先順序結合,一步一步分析 先來看看簡單的型別 int p 這是乙個普通的整型變數 int p 先從p處開始,先...