c語言指標問題

2021-09-02 07:16:47 字數 843 閱讀 8634

c是一門可以直接操作記憶體的語言,但這並不代表我們就可以以自己主觀的意思來操作記憶體。

看下面的**

#includevoid pr(int *p, int *p1);

int main()

void pr(int *p, int *p1)

執行後結果都是12.

首先,我們要明白指標的定義是乙個存放位址的變數,也就是說,它指向的位址是會改變的,

我們把p的位址賦給b,也就是讓b指向a所在的位址,然而在第2行我們將p指向位址裡的內容改變,

那麼也就是說,我們也將b指向位址的內容改變。總之,指標的本質就是位址,位址裡的內容

是派生量。

看下面的**

#includevoid pr(int *p, int *p1);

int main()

void pr(int *p, int *p1)

執行結果是10 15

這個**體現乙個問題,便是對於函式型參的理解與對記憶體四區的理解

首先我們把主函式的位址傳給了p與p1;對於這兩個形參來說,他們相當與乙個副本,或者

說是乙個容器,來容納主函式帶來的內容,對於形參來說,他的生命週期只有在pr函式中,

因為他們是自動變數,塊作業域,變數之間的交換很正常,這等於在這個pr函式中建立了只在這個

函式中有用的變數,想要改變這個位址裡的內容,請使用*運算子。

自己執行一下面的**

#includevoid pr(int *p, int *p1);

int main()

c語言指標問題

對於以下 段 int a int p a int q a 5 printf d q p 當sizeof int 為4時,以下說法正確的是 a.因為第三行的錯誤不能編譯 b.因為第三行的錯誤執行時崩潰 c.輸出5 d.輸出20 指標的減法實際是位址間能存放多少個指標指向物件的資料型別的值。a是int型...

c語言指標問題小結

最近使用指標的時候遇到了一些問題,在這裡做乙個簡單的總結,加深下對指標的認識。陣列和指標大部分情況下可以互換使用,但是有些時候卻是必須得區別對待,否則一不小心就會出錯。比如下面四個test例子,test1是對的,test2是錯的,指標指向乙個位址的情況,因為getuartdata 返回乙個指標位址,...

C語言回首 指標問題

最近偶然看起了c語言,發現還十分有趣 現在起開個新坑 接下來的一系列部落格都會記錄我重新學習c語言和資料結構時的所思所感 指標變數之間賦值是需要相容的。例如 int a int的位址 char b char的位址 void型別的指標可以做任意型別位址的賦值操作。例如 void p int位址可以 p...