tft每日頭條

 > 科技

 > c語言指針詳解通俗易懂

c語言指針詳解通俗易懂

科技 更新时间:2025-01-27 12:58:30

c語言指針詳解通俗易懂(程序員編程C語言指針答疑)1

C語言指針,紙老虎

一、程序員編程C語言答疑合集

更多C語言學習答疑文章,請參閱:程序員編程C語言答疑文章合集

也可以加入下方我的“C語言答疑課堂”圈子,第一時間看到我給大家帶來的C語言試題解析!

二、【程序員編程】【C語言指針試題】

給你下述C程序代碼:

int paraInt1 = 1, paraInt2 = 2; int const paraInt3 = 3; const int *pInt1 = &paraInt1; int *const pInt2 = &paraInt2; int const *pInt3 = &paraInt1; *paraInt3 = 4; pInt1 = &paraInt2; *pInt2 = 5; pInt2 = (int *)0x6; pInt2 = &paraInt1; pInt3 = 0x123;

請問這段C程序代碼哪裡有錯?

三、【計算機編程】【C語言指針答疑】

1、“己他”概念來解題

這道C程序題的代碼看上去讓人“眼花缭亂”,其實使用我提出的C語言指針“己他”概念來解這道題還是很簡單的。有關C語言指針的“己他”概念在我的專欄:

的第九章和第十章有詳細的闡述,如下:

第九章:章節九、指針“己X”概念,從這裡開始!(基本數據類型篇)

第十章:章節十、指針“他X”概念,精彩來了!(基本數據類型篇)

簡單來說,C語言指針的“己他”概念分為“己X”概念和“他X”概念,分别如下:

1.1 “己X”概念

“己X”分為己型、己址和己值。

“己型”:就是C語言指針自己的類型;

“己址”:就是C語言指針自己的地址;

“己值”:就是C語言指針自己的數據值;

1.2 “他X”概念

“他X”概念分為他型、他址和他值。

“他型”:就是C語言指針指向的對象的類型;

“他址”:就是C語言指針指向的對象的地址;

“他值”:就是C語言指針指向的對象的數據值;

這道C語言指針試題就會用到“己他”概念中的“己值”、“他值”的概念!

2、C程序代碼

我來把這道C語言指針題擴展成一段C程序代碼,如下:

c語言指針詳解通俗易懂(程序員編程C語言指針答疑)2

C程序代碼

這段C程序代碼我定義了四個int型變量,接着我又定義了三個指針變量,并且使用const來修飾指針變量。然後我編譯的結果如下:

c語言指針詳解通俗易懂(程序員編程C語言指針答疑)3

編譯結果

3、C程序代碼分析

下面我們就用“己值”的概念來分析這道C語言試題!

3.1 分析1

在C程序代碼的第6行和第12行有如下語句:

第6行:int const paraInt3 = 3; 第12行:*paraInt3 = 4;

第6行C代碼僅僅是定義了一個int型變量paraInt3,可是在第12行卻想把一個整數“4”賦值給paraInt3的他值。在我的專欄中很清晰地解釋過:“他值是指針才有的概念,基本數據類型不可能有他值的概念”,所以第12行編譯器肯定要報錯。

3.2 分析2

在C程序代碼的第9行、第15行和第16行有如下語句:

第9行:int *const pInt2 = &paraInt2; 第15行:pInt2 = (int *)0x6; 第16行:pInt2 = &paraInt1;

第9行中定義指針變量pInt2時,前面有const修飾符,意思就是指針變量pInt2的初始己值一旦被賦值後,後面就不能再變了。可是在C程序代碼第15行和第16行仍然試圖給指針變量pInt2的己值賦值,編譯器當然會報錯了。

3.3 分析3

在C程序代碼的第17行有如下語句:

第17行:pInt3 = 0x123;

這一行中改變指針變量pInt2的己值是可以的,奈何pInt2的己型和0x123不對應。

我在專欄中說過,指針變量pInt2的己型是地址類型,而0x123隻是一個int型的16進制,把一個int型賦值給一個地址類型,這八竿子打不着的事兒編譯器當然會告警了!

四、C語言指針答疑試題總結

這道C程序題從代碼來看,跟「C語言指針答疑」const與指針的混搭風 這篇文章的C程序試題很相像,使用C語言指針的“己他”概念就可以了,所以這道題也是個紙老虎而已!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved