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 

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类,我们能够更方便的使用字符串了,但是其中的原理我们任然需要了解清楚。因为篇幅有限,所以字符          串将单独作为一篇来进行详细的讲解

你可能感兴趣的:(C++专辑,C++指针和数组专辑,C语言指针数组专辑,指针基础到提高)