Chinaunix首页 | 论坛 | 博客
  • 博客访问: 496937
  • 博文数量: 111
  • 博客积分: 3160
  • 博客等级: 中校
  • 技术积分: 1982
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-24 11:49
个人简介

低调、勤奋。

文章分类

全部博文(111)

文章存档

2014年(2)

2013年(26)

2012年(38)

2011年(18)

2010年(27)

分类: C/C++

2012-12-16 09:55:06

4.1.1 数组的定义和初始化

    数组的维数必须用值大于等于1的常量表达式定义。非const变量以及要到运行阶段才知道其值的const 变量都不能用于定义数组的维数。

如:int staff_size = 27;
       double salarise[staff_size ]; //error non const variable

    显示初始化数组元素:

   const unsigned array_size = 3;
   int[array_size ] = {0, 1, 2};  //显示初始化可不指定数组的维数

特殊的字符数组:

  当使用字符串字面值来初始化创建新数组时,将在新数组中加入空字符:

  char cal[] = {'C', '+', '+'};  //no null
  char ca2[] = {C', '+', '+','\0'}; //explicit null
  char ca3[] = "C++"; // null terminator added automatically

 ca1 维数为3,ca2和ca3的维数为4

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

4.1.2 数组操作

   数组元素从0开始计数,一个包含10个元素的数组,下标值是从0到9。

4.2 指针

   指针和引用的比较:

  第一个区别:引用总是指向某个对象,定义引用时没有初始化是错误的。
  第二个区别:给引用赋值修改的是该引用所关联的对象的值。引用一经初始化就始终
指向一个特定的对象。

引用:就是地址别名,相当于给某个变量另取了一个名字。

指向指针的指针

int ival = 1024;
int *pi = &ival;
int **ppi = π

定义了指向指针的指针。

  
对ppi进行解引用,可获得ppi所指的对象,在本例中,所获得的对象是指向int型变量的指针pi。
int *pi2 = *ppi; 

为了真正访问到ival对象,必须进行两次解引用。

cout << "The value of ival \n"
         << "direct value is " << ival << "\n"
         << "indirect value: " << *pi << "\n"
         << "double indirect value" << *pi2 
        << endl;

4.2.5 指针和const限定符

指向const对象的指针:

我们使用指针来修改其所指对象的值,但是如果指针指向const对象,则不允许用指针
来改变其所指的const值。

const double *cptr; //cptr may point to a double that is const
这里cptr本身不是const,所以cptr指向的对象可以变,但是不允许改变对象的值。

const 指针:

int errNumb = 0;
int *const curErr = &errNumb;

这里curErr是const的,所以必须进行初始化,初始化完成后,curErr本身的值不运行变,
但是可以改变其所指向的对象的值。这里跟上一点是相反的。

指向const对象的const指针

const double pi = 3.14;
const double *const pi_ptr = π

这钟情况,pi_ptr指向的对象和本身的值都不允许修改。




阅读(602) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~