<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            C語言

            c語言指針的基本概念

            時間:2025-04-07 11:51:45 C語言 我要投稿
            • 相關推薦

            c語言指針的基本概念

              關于指針的基本概念,我就不詳細介紹了,因為有許多書都介紹的很詳細。這里我只介紹一部分。指針指向一個地址,而指針本身在大多數系統上都是一個無符號整數(在32bit機上是4byte,在64bit機上是8byte)。

              下面用一個例子來說明其機制:

              在上面的例子中,先定義了一個指針p,它的類型是int,也就是說它只能指向一個int型的變量,而不能指向其他類型的變量。最后我們將a變量的地址賦給p。在這個過程中,涉及到兩個內存塊,一個是存放指針p的內存(用&p可得到內存地址),一個是存放a的值的內存塊(用&a可以得到內存地址)。而第一個內存存的p的值經過賦值語句后也就是&a的值了。另外一個注意點是, *(星號)和變量類型以及變量名之間可以有任意個空格,也可以沒有。比如下面三種方式都是一樣的:

              int a = 10;

              int *p; //聲明一個指針,但未初始化,此時為野指針

              p = &a; //將a變量的地址賦給指針p

              在上面的例子中,先定義了一個指針p,它的類型是int,也就是說它只能指向一個int型的變量,而不能指向其他類型的變量。最后我們將a變量的地址賦給p。在這個過程中,涉及到兩個內存塊,一個是存放指針p的內存(用&p可得到內存地址),一個是存放a的值的內存塊(用&a可以得到內存地址)。而第一個內存存的p的值經過賦值語句后也就是&a的值了。另外一個注意點是, *(星號)和變量類型以及變量名之間可以有任意個空格,也可以沒有。比如下面三種方式都是一樣的:

              int* a;

              int * a;

              int *a;

              解讀方法:

              首先從標示符開始閱讀,然后往右讀,每遇到圓括號的右半邊就調轉閱讀方向。重復這個過程直到整個聲明解析完畢。需要注意的是,已經讀過的部分在后續作為一個整體來看。

              看下面一個例子:

              int *a[3];

              //首先a右邊是[],說明a是一個具有3個元素的數組

              //右邊讀完,則讀左邊。a左邊是int*,說明a的元素是int類型的指針

              int (*a)[3]

              //首先,a右邊是圓括號的右半邊,轉向,左邊是一個*,說明a是一個指針

              //遇到括號,再轉向,是一個[],說明a是一個指向3個元素的數組的指針

              //左邊是int,說明元素類型是int

              //所以,a是一個指向具有3個整型元素的數組的指針

              int (*func)(int p);

              //相同的方法,func首先是一個指針

              //然后右邊是一個括號,說明(func)是個函數,而func是指向這個函數的指針

              //這個函數具有int類型的參數,返回值類型為int

              int (*func[3])(int p);

              //同理,func首先是一個具有3個元素的數組

              //其次,func左邊是一個*,說明func數組的元素是指針。要注意修飾的是func[3],而不是func。因為已經讀過的部分在后面都作為一個整體來對待

              //跳出第一個圓括號,右邊又是一個圓括號,說明func數組的元素是函數類型的指針。這個函數具有int類型的參數和int型返回值


            【c語言指針的基本概念】相關文章:

            C語言的指針10-11

            C語言指針的總結08-12

            C語言指針教學10-28

            C語言指針的用法07-02

            什么是C語言中指針 C語言指針的基礎使用10-01

            C語言指針的傳遞10-13

            對C語言指針的總結08-27

            C語言指針的概念08-20

            C語言指針函數和函數指針詳解09-29

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看