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;
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;
相关文章推荐
- CPP-基础:C/C++数组名与指针的区别
- c++基础复习之数组与指针
- C/C++基础知识总结——数组、指针域、字符串
- C++基础学习系列第一部分——再议数组与指针
- C++指针,数组,引用基础
- C++基础积累(2)指针与数组、指针与函数关系详解
- c++基础之指针与数组
- c/c++ 基础(三) 指针与数组
- [C++基础]那些容易被混淆的概念:函数/数组指针-指针函数/数组,类/函数模板-模板类/函数
- C++基础教程 学习笔记(二) 数组、字符串和指针
- c++ 基础 指针访问数组两种方法 下标法 指针法
- C++基础概念-数组、指针和字符串
- Unix/Linux C++应用开发-C++基础概念"数组、指针和字符串"
- C++基础8【难】 回顾:数组指针,函数指针,函数指针做函数参数 C语言多态
- C/C++基础———C/C++中函数指针和数组指针、数组名的一些个人理解
- C++基础之指针数组和数组指针(重点是后面的名词)
- C++数组类型基础及数组指针基础
- 【C++基础】sizeof 数组 指针 空NULL
- C/C++基础知识(一)数组和指针
- C++基础---指针数组与数组指针