C語言指標學多了,你為什麼會覺得暈?

2021-09-14 01:10:32 字數 1770 閱讀 2960

對於c語言中的指標概念,如果我告訴你,它是乙個位址變數,你聽了一頭霧水,「位址?啥意思?」見你不理解,我說的詳細點「指標變數跟其他變數一樣,儲存的是乙個位址」。你想了想,「跟其他變數一樣?其他變數存放的是數值,變數有位址....指標變數存放的是位址,位址裡有個值.....」你又暈掉了!沒辦法,我找了專業教材,找到教材上對指標的定義「指標是乙個變數,儲存的另乙個變數的位址,也就是另乙個變數所在的記憶體位置的首位址。」你轉了轉大眼睛,仍然一頭懵逼!

好吧,看來傳統的解釋會讓你一直暈下去,那我不解釋了,本篇文章我不解釋什麼叫指標了,我就重點說下為什麼指標會讓你暈,指出讓你暈的根本原因,也許你知道了就不暈了呢?

我們先來看乙個很簡單的變數定義:

int a = 1;
a是乙個整型變數,它的值是1,對於這麼簡單的乙個變數,你鐵定地絕對地一定地不會暈,a就是1,1就是a嘛,簡單、清晰、明了!

畫個圖來看下:

好了,下面我們再定義乙個指標變數p:

#include "stdio.h"

#include "stdlib.h"

int main()

我們先看下執行結果:

p的值是「380fe0」,指向的值是2。你看到這個後,你會想「剛才變數a和1好理解,a就是1,1就是a。現在有p,380fe0,2三個東東,p就是380fe0?那p跟2是啥關係?380fe0跟2又是啥關係?對了,好像還有個*p這個東東,又是什麼關係?完了,我暈了!!」現在我可以指出,在理論上,你指標學多了暈的根本原因就在如下兩點:

1.有四個東西:p,*p,380fe0和2,比剛才的a和1硬生生多了兩個東西,使得你大腦思考時多了兩個需要思考的物件,增加了你大腦思考的負擔;

2.這四個東西:p,p,380fe0和2中,只有p、p、2會被程式**所使用,380fe0一般用不到,但是你又必須時時刻刻記著這個380fe0,又再次增加你大腦思考的負擔;

好了,我再用一張圖來形象地解釋你會暈的原因:

與a和1的那張圖對比,形象上來說你指標學多了暈的根本原因又在如下3點:

1.你傳統思維是a就是1,1就是a。但在指標變數來看,p就不是2,2也不是p了。p是啥?p就是380fe0,380fe0就是p。注意,你的傳統思維開始第一次被顛覆,接著看:

2.那誰就是2,2就是誰呢?答案就在於p就是2,2就是p。出現了*p,你的傳統思維第二次被顛覆,哈哈;

3.那p和p啥關係?兩者長的好像啊,就是多了乙個的區別。你的傳統思維開始第三次被顛覆。到這裡,你基本上已經暈了;

那麼,在學指標,用指標時,如何做到不暈呢?除了好好多學習多思考外,我教你三招:

1.看到指標變數時,立即拋棄你的a就是1,1就是a的傳統思維,開始想到p,*p,380fe0和2這四個東東,不然你會思考的很痛苦;

2.牢記p與380fe0是一家,*p與2是一家;

3.記住p與2是遠方親戚,p與2要通過p來聯絡;p與380fe0是遠方親戚,p脫掉就和380fe0是一家了。

這篇文章主要是分析指標學習讓你頭暈的原因,文字表述可能並不嚴謹,請見諒!

C語言指標學多了,為什麼你會暈乎乎的?

對於c語言中的指標概念,如果我告訴你,它是乙個位址變數,你聽了一頭霧水,位址?啥意思?見你不理解,我說的詳細點 指標變數跟其他變數一樣,儲存的是乙個位址 你想了想,跟其他變數一樣?其他變數存放的是數值,變數有位址.指標變數存放的是位址,位址裡有個值.你又暈掉了!沒辦法,我找了專業教材,找到教材上對指...

為什麼你會覺得時間越過越快?

閱讀本文大概需要 2.6 分鐘。喜歡宅的人越會覺得時間飛快。之前工作太繁忙,就在 7 月 11 號調休了兩天,加上週末,共 4 天時間,第一次環著太湖自駕遊,哪個地方好玩,就多玩一些時間,隨遇而安的那種,時間似乎變慢了,四天的時間過得似乎像是乙個星期。現在 9 月 6 號了,我仍能清晰地記得那時的天...

面對異議,你為什麼會覺得無力爭辯?

大多時候,你所站的位置決定了你的話語權,別以為靠的是你的能力和你所佔的理,位置越靠上越有話語權和決策權。所以,不要以為你在理,你就一定能爭取到有利結論。退一步來說,世間之事,沒有絕對的對錯,只不過佔的立場不同,利益不同,關係不同而已,不用執著與執念。當然也不是說不爭,而是不要激烈的爭,不要理所當然,...