您的位置:首页 > 编程语言 > C语言/C++

C++ 基础4:数组和指针

2011-09-07 22:58 471 查看
本文主要讲述数组,各种类型的指针以及指针和数组的联系。

1.数组

(1) 数组的定义 只需要注意一点,定义数据时,必须明确指定数组的长度,这个长度不能是变量。如果在定义数组时就对数组进行初始化,可以不必指定数组长度,

那么数组长度就是初始化元素的个数。

(2) 数组的初始化

数组为内置类型全局变量,自动初始化为0

为内置类型局部变量,必须显示初始化

数组为类类型,无论是全局变量还是局部变量,都会自动调用类的默认构造函数初始化,若类无默认构造函数,则必须显示初始化。

(3)字符数组

"Hello"是个特殊的字符数组 等于 const char CArray[ ] = {'H','e','l','l','o','\0'}

(4)数组不允许直接复制和赋值

2.指针

(1) 指针的定义

int* p; int *p; *号可以跟着int, 也可以跟着p.

(2)指针的初始化

a. 0或Null

b. 和指针相同类型的变量地址

c. 另一个对象的地址的下一个地址

d.相同类型的另一个指针

(3) 指向指针的指针 其值是另一个指针的地址 int *p = 0; int **q =&p;

(4) 指向const对象的指针

const int i = 0;

int* const p = &i;

p也可以指向非const变量,p本身的值可以改变,*p不能改变

(5) const指针

指针本身的值不能改变,但是指针指向的变量值是否可以改变取决于变量本身是否是常量。

int i = 1;

int const *p =&i;

(6)指向const变量的const指针

本身的值不能改变,指向的值也不能改变。

const int const *p;

(7) 指针的算术操作

连个指针相减得到ptriff_t类型的值

(8)指针和引用的区别

引用在声明时就必须初始化;

引用一旦初始化,就永远和最初的变量相联系,改变引用的值,等于改变相关联变量的值; 而指针初始化以后可以再指向另外一个变量。

3. 指针和数组的关系

(1)一维数组名为数组第一个变量的地址,可赋值给一个指针

(2)new, malloc可动态创建数组,new创建的数组在栈中,malloc创建的数组在自由区中

创建常量数组: const int* p = new const int[8](); 必须初始化

(3)指针和二维数组

int a[3][4];

int (*p)[4] = a;

p是一个指向有4个int元素数组的指针,*p为第一个元素的地址,*p中存放是一个Int 指针,**p是元素的值

p=&a[0]; p++=&a[1];

*p = &a[0][0]; *p++=&a[0][1]; **p = a[0][1];

int *p[4]; 表示为有4个int指针元素的数组

typedef string* ptr;

const ptr astring = string* const astring;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: