久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12773|回復: 27
打印 上一主題 下一主題
收起左側

徹底搞定C指針(共46頁pdf下載)寫得很通俗易懂

  [復制鏈接]
跳轉到指定樓層
樓主
徹底搞定C指針



前言1
目  錄2
修訂說明3
A類:規范化3
B類:更正3
C類:明晰化4
D類:編譯器4

第壹篇  變量的內存實質5
1.先來理解C語言中變量的實質5
2.賦值給變量6
3.變量在哪里?(即我想知道變量的地址)7

第貳篇  指針是什么?8
1.指針是什么東西8
第叁篇  指針與數組名11
1  通過數組名訪問數組元素11
2.通過指針訪問數組元素11
3.數組名與指針變量的區別12
4.聲明指針常量13

第肆篇const int *pi與int *const pi的區別14
1  從const int i 說起14
2.  const int *pi的語義15
3  再看int *const pi16
4.補充三種情況18

第伍篇  函數參數的傳遞20
1.三道考題20
2  函數參數傳遞方式之一:值傳遞23
3  函數參數傳遞方式之二:地址傳遞26
4  函數參數傳遞方式之三:引用傳遞27

第陸篇  指向另一指針的指針30
1  回顧指針概念30
2.指針的地址與指向另一指針地址的指針31
3  一個應用實例32

第柒篇  函數名與函數指針37
1  通常的函數調用37
2.函數指針變量的聲明38
3.通過函數指針變量調用函數38
4.調用函數的其它書寫格式39
5.定義某一函數的指針類型42
6  函數指針作為某個函數的參數44

如上圖所示,內存只不過是一個存放數據的空間,就好像我的看電影時的電影院中的座位一樣。電影院中的每個座位都要編號,而我們的內存要存放各種各樣的數據,當然我們要知道我們的這些數據存放在什么位置吧!所以內存也要象座位一樣進行編號了,這就是我們所說的內存編址。座位可以是遵循“一個座位對應一個號碼”的原則,從“第 1 號”開始編號。而內存則是按一個字節接著一個字節的次序進行編址,如上圖所示。每個字節都有個編號,我們稱之為內存地址。好了,我說了這么多,現在你能理解內存空間這個概念嗎?

我們繼續看看以下的 C/C++語言變量聲明:
int i;
char a;
每次我們要使用某變量時都要事先這樣聲明它,它其實是內存中申請了一個名為 i 的整型變量寬度的空間(DOS 下的 16 位編程中其寬度為 2 個字節),和一個名為 a 的字符型變量寬度的空間(占 1 個字節)。

     圖中可看出,i 在內存起始地址為6 上申請了兩個字節的空間(我這里假設了 int 的寬度為 16 位,不同系統中int 的寬度可能是不一樣的),并命名為 i。  a在內存地址為 8 上申請了一字節的空間,并命名為 a。這樣我們就有兩個不同類型的變量了。

2.賦值給變量

再看下面賦值:
i = 30;
a = ’t’;
你當然知道個兩個語句是將 30 存入 i 變量的內存空間中,將“t”字符存入 a 變量的內存空間中。我們可以利用這樣的形象來理解啦:

3.變量在哪里?(即我想知道變量的地址)

好了,接下來我們來看看&i 是什么意思? 是取 i 變量所在的地址編號嘛!我們可以這樣讀它:返回 i 變量的地址編號。你記住了嗎?
     我要在屏幕上顯示變量的地址值的話,可以寫如下代碼: printf("%x", &i);
     以上圖的內存映象為例,屏幕上顯示的不是i 值 30,而是顯示 i 的內存地址編號 6 了。當然,在你的實際操作中,i變量的地址值不會是這個數了。
     這就是我所認為的作為初學者應該能夠想象到的變量存儲的實質了。請這樣理解吧!
     最后總結代碼如下:
main()
{
  int i = 39;
  printf(“%d\n”, i);   /*①*/
  printf(“%d\n”, &i);  /*②*/
  return(0);
}
現在你可知道①、②兩個printf 分別在屏幕上輸出的是i 的什么東西啊?
好啦!下面我們就開始真正進入指針的學習了。


1.指針是什么東西

指針,想說弄懂你不容易啊!我們許多初學指針的人都要這樣感慨。我常常在思索它,為什么呢?其實生活中處處都有指針,我們也處處在使用它。有了它我們的生活才更加方便了。沒有指針,那生活才不方便。不信?你看下面的例子。  這是一個生活中的例子:比如說你要我借給你一本書,我到了你宿舍,但是你人不在宿舍,于是我把書放在你的2 層 3 號的書架上,并寫了一張紙條放在你
的桌上。紙條上寫著:你要的書在第2 層 3 號的書架上。當你回來時,看到這紙條,你就知道了我借與你的書放在哪了。你想想看,這張紙條的作用,紙條本身不是書,它上面也沒有放著書。那么你又如何知道書的位置呢?因為紙條上寫著書的位置嘛!其實這張紙條就是一個指針了。它上面的內容不是書本身,而是書的地址,你通過紙條這個指針找到了我借給你的這本書。 那么我們C/C++中的指針又是什么呢?請繼續跟我來吧,下面看一條聲明一個指向整型變量的指針的語句:
int *pi;
pi 是一個指針,當然我們知道啦,但是這樣說,你就以為 pi 一定是個多么特別的東西了。其實,它也只過是一個變量而已。與上一篇中說的變量并沒有實質的區別。不信你看下面圖:


(說明:這里我假設了指針只占 2 個字節寬度,實際上在 32 位系統中,指針的寬度是4 個字節寬的,即 32位。) 由圖示中可以看出,我們使用“int *pi”聲明指針變量  ——  其實是在內存的某處聲明一個一定寬度的內存空間,并把它命名為 pi。你能在圖中看出pi 與前面的i、a  變量有什么本質區別嗎?沒有,當然沒有!pi 也只不過是一個變量而已嘛!那么它又為什么會被稱為“指針”?關鍵是我們要讓這個變量所存儲的內容是什么。現在我要讓 pi 成為具有真正“指針”意義的變量。請接著看下面語句:
pi = &i;
你應該知道  &i 是什么意思吧!再次提醒你啦:這是返回 i 變量的地址編號。整句的意思就是把 i 地址的編號賦值給 pi,也就是你在 pi 里面寫上 i 的地址編號。結果如下圖所示:

你看,執行完 pi=&i 后,在圖示中的內存中,pi 的值是 6。這個 6 就是i變量的地址編號,這樣 pi 就指向了變量 i了。你看,pi 與那張紙條有什么區別?pi 不就是那張紙條嘛!上面寫著 i的地址,而 i 就是那個本書。你現在看
懂了嗎?因此,我們就把pi 稱為指針。所以你要記住,指針變量所存的內容就是內存的地址編號!好了,現在我們就可以通過這個指針 pi 來訪問到 i 這個變量了,不是嗎?看下面語句:
printf("%d", *pi);
那么*pi 什么意思呢?你只要這樣讀它:pi 的內容所指的地址的內容(嘻嘻,看上去好像在繞口令了),就是 pi 這張“紙條” 上所寫的位置上的那本  “書”—— i 。你看,Pi 的內容是 6,也就是說 pi 指向內存編號為 6 的地址。*pi嘛,就是它所指地址的內容,即地址編號6上的內容了,當然就是30 這個“值”了。所以這條語句會在屏幕上顯示30。也就是說 printf("%d", *pi)等價于printf("%d", i) ,請結合上圖好好體會吧!各位還有什么疑問?
到此為止,你掌握了類似&i、*pi 寫法的含義和相關操作嗎?總的一句話,我們的紙條就是我們的指針,同樣我們的 pi 也就是我們的紙條!剩下的就是我們如何應用這張紙條了。最后我給你一道題:程序如下。
char  a,*pa;
a = 10;
pa = &a;
*pa = 20;
printf("%d", a);
你能直接看出輸出的結果是什么嗎?如果你能,我想本篇的目的就達到了。好了,就說到這了。Happy Study! 在下篇中我將談談“指針的指針”即對
int **ppa;
中 ppa 的理解。

完整的pdf格式文檔51黑下載地址(共46頁):
徹底搞定C指針.pdf (328.7 KB, 下載次數: 788)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏43 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:151626 發表于 2019-2-28 11:00 | 只看該作者
剛好在學習c指針 有些問題不明白  找些資料
回復

使用道具 舉報

板凳
ID:471632 發表于 2019-2-28 13:35 | 只看該作者
學好這個,c語言就算入門了。
回復

使用道具 舉報

地板
ID:344498 發表于 2020-3-17 08:36 | 只看該作者
學了這個就可以隨意操作數據了
回復

使用道具 舉報

5#
ID:710819 發表于 2020-3-18 13:37 | 只看該作者
C指針真是比較燒腦,這個解說形象易懂,學習了。
回復

使用道具 舉報

6#
ID:719450 發表于 2020-3-31 12:56 | 只看該作者
c指針學了一年了,到這里來看看
回復

使用道具 舉報

7#
ID:74872 發表于 2020-4-4 16:12 | 只看該作者
下載學習,感謝分享。
回復

使用道具 舉報

8#
ID:746846 發表于 2020-5-8 13:40 | 只看該作者
學一下指針找一下資料
回復

使用道具 舉報

9#
ID:753514 發表于 2020-5-16 18:55 | 只看該作者
這個真的不錯,贊!
回復

使用道具 舉報

10#
ID:253767 發表于 2020-6-7 08:19 | 只看該作者
謝謝分享!!!
回復

使用道具 舉報

11#
ID:446774 發表于 2020-6-10 14:15 | 只看該作者
剛好在學習c指針 有些問題不明白
回復

使用道具 舉報

12#
ID:808836 發表于 2020-7-28 21:05 | 只看該作者
謝謝分享! 學單片機到現在,一直被指針困擾!
回復

使用道具 舉報

13#
ID:59830 發表于 2020-8-13 11:09 | 只看該作者
簡潔實用,對有點基礎,似懂非懂不錯的. 謝謝!
回復

使用道具 舉報

14#
ID:477524 發表于 2020-8-27 09:09 | 只看該作者
學好這個,c語言就算入門了
回復

使用道具 舉報

15#
ID:830245 發表于 2020-10-15 15:54 | 只看該作者
看看,感覺比較好理解
回復

使用道具 舉報

16#
ID:994367 發表于 2021-12-19 20:19 | 只看該作者
學習一下指針
回復

使用道具 舉報

17#
ID:993017 發表于 2022-2-9 14:58 | 只看該作者
新手,剛好在轉行軟件,很有用
回復

使用道具 舉報

18#
ID:419099 發表于 2022-2-10 16:56 | 只看該作者
文檔清晰
回復

使用道具 舉報

19#
ID:1003226 發表于 2022-2-23 12:24 | 只看該作者
C指針真是比較燒腦,這個解說形象易懂,學習了
回復

使用道具 舉報

20#
ID:386044 發表于 2022-3-10 14:39 | 只看該作者
一直搞不明白,洗完能通過這本書搞清楚
回復

使用道具 舉報

21#
ID:421481 發表于 2022-3-12 08:35 | 只看該作者
nice!!!
回復

使用道具 舉報

22#
ID:727625 發表于 2022-5-18 10:37 | 只看該作者
謝謝分享! 學單片機到現在,一直被指針困擾
回復

使用道具 舉報

23#
ID:130230 發表于 2022-5-19 14:39 | 只看該作者
要是學過匯編,肯定不會覺著指針難搞。
回復

使用道具 舉報

24#
ID:1090276 發表于 2023-8-1 14:54 | 只看該作者
謝謝分享,一直被指針困擾
回復

使用道具 舉報

25#
ID:38662 發表于 2023-8-2 14:37 | 只看該作者
指針一直搞不太明白,努力學習學習。謝謝!
回復

使用道具 舉報

26#
ID:195496 發表于 2024-3-14 09:04 | 只看該作者
只會簡單的指針應用,復雜的還要慢慢學習
回復

使用道具 舉報

27#
ID:136678 發表于 2024-3-27 18:55 | 只看該作者
努力學習爭取把指針弄懂
回復

使用道具 舉報

28#
ID:1110792 發表于 2024-12-23 18:34 | 只看該作者
下載學習,感謝分享。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产一区二区在线 | av免费网址 | 成人免费视频网站在线看 | 欧产日产国产精品视频 | 国产视频线观看永久免费 | 亚洲成人一区 | 国产精品99久久久久久久久久久久 | 久久99精品久久久久子伦 | 自拍偷拍亚洲一区 | 天天综合成人网 | 久久99精品久久久 | 亚洲精品电影网在线观看 | 中文字幕综合 | 在线观看中文字幕dvd播放 | 久久欧美精品 | 亚洲国产成人精品久久 | 精品1区2区3区 | 91久久精品国产91久久性色tv | 香蕉婷婷 | 一区二区三区影院 | 欧美成人aaa级毛片在线视频 | 91九色在线观看 | 国产一级视频免费播放 | 国产偷录视频叫床高潮对白 | 久久久久久久夜 | h视频网站在线观看 | 国产视频1 | 欧美h视频| 亚洲欧美一区二区三区国产精品 | 中文字幕亚洲一区二区三区 | 不卡欧美| 在线观看成年视频 | 欧美 日韩 国产 成人 在线 91 | 亚洲一区二区日韩 | 欧美人妇做爰xxxⅹ性高电影 | 日本视频一区二区三区 | 日韩美女爱爱 | 成人免费视频网站在线看 | 国产96在线 | 一区二区视频在线观看 | 在线观看欧美日韩视频 |