C++指針和數組:認識指針和數組

注:本文章是基於C++98的標準來寫的,有關C++11的標準的知識後續會陸續更新

1、C/C++在數組和指針方面的內容相差無幾,故有關C方面的指針也可以加以參照

2、數組的定義和初始化

          定義一個數組:Int a[10];
                                     char ch[11];
          初始化一個數組:a[10] = {0};//a中的元素全部內置爲0
                                          ch[11] = {'a'};//第一個元素爲a,其他的爲/0
          因爲內置數組類型未重載 = 操作符,所以不能用一個數組直接初始化另一個數組
                                       int b[10];
                                       b=a;//這樣是錯誤的,編譯器在編譯階段就會報錯

3、指針的定義和初始化

             指針佔了C語言的半壁江山。在C++中,指針雖然並沒有C語言中那樣重要(在C++中儘量是用引用來代替指針),但是掌握好指針是寫出高級程序的基礎。雖然指針         很難 ,但是啃下這塊硬骨頭,受益的最終還是自己。
  定義一個指針:int *pa;
                             char *pch;
 在C/C++中指針泄露或是指針錯指等問題很是令人頭疼,其中最常見的便是懸垂指針。避免懸垂指針最好的方法就是養成良好的編程習慣:指針一經定義便初始化爲0(NULL)。
          初始化一個指針:pa = a;//使用數組來初始化
                                         pch = ch;//使用數組來初始化
                                         int m = 11;
                                         pa = &m;//直接將指針指向一個數
              

4、指針和數組的應用

                內置類型數組提供了下標訪問操作,可以很方便的讓我們來遍歷數組中的每一個元素
                                       a[0] = 0;
                指針的用處之一便是間接訪問,通過間接訪問我們可以取得指針所指元素的值,也可以通過間接訪問來修改指針所指向內存空間的值
                int n = *pa; //n = 11;
                *pa = 15;// n = 11,m = 15

5、指針和數組之間的關係

               因爲數組名實際上是一個內存塊的首地址,所以我們除了以下標的方式來訪問數組中的元素外,還可以使用偏移的方式來訪問
               *(a+0)=*(a);//這裏是得到數組的首元素
               那麼要得到數組的第n個元素呢:
               a[n-1];或是 *(a+n-1);
               所以這裏我們可以看到數組和指針在某方面有一種等價的關係,知道這種關係的存在便可以讓我們做些大事

6、指針做函數參數(數組做函數參數)

                先看一個例子: 

              在上述操作中將數組作爲實參傳遞給指針形參,然後在函數內部修改數組的值,最終將其輸出,這是指針強大之處的體現。

#include <iostream>

using namespace std;
#define NULL 0

void Array_Assign(int *p)
{
    for(int i = 0;i<10;i++)
        p[i] = i;
}

void Array_Display(int *p)
{
    for(int i = 0;i<10;i++)
        cout<<*(p+i)<<" ";
}

int main()
{
    int a[10];
    char ch[10];
    int *pa = 0;
    int *pb;
    char *pch = NULL;

     //給數組賦值
     Array_Assign(a);

     //輸出數組中的元素
     Array_Display(a);
}


7、最後一點是字符串數組和指針

              C++中的字符串任然沿用了C中的用法。在C++中提供了string類,我們能夠更方便的使用字符串了,但是其中的原理我們任然需要了解清楚。因爲篇幅有限,所以字符          串將單獨作爲一篇來進行詳細的講解

發佈了27 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章