数组和指针关系论述

  1. 指针的初始定义

    与指针指向简单变量定义有些差别,

int wages[3] = { 10, 11, 12 };

int *pt;

 

指针指向数组定义的方法有三种:

(1)

int *pt = &wages[0];

(2)

int *pt = wages;

(3)

int *pt;

pt= wages;

 

2、对于数组,其有如下特点:

cout << arrayname << endl; //输出数组第一个元素的地址

cout << &arrayname[0] << endl; //输出数组第一个元素的地址

arrayname = &arrayname[0];

数组是特殊的指针,任何数组都满足:

typeName arrayname[0] = *arrayname;

typeName arrayname[i] = *(arrayname + i);

&arrayname[i] = arrayname+i;

 

3、关于指针、数组占据内存的大小有:

cout << sizeof(arrayname) << endl; //输出的是整个数列元素所占内存的大小

cout << sizeof(arrayname[i]<< endl; //输出的是数列中一个元素所占内存的大小

cout << sizeof(pointname) << endl; //输出是指针所占内存的大小,对于一台设备是固定值,不随指针所指数据类型变化而变化

cout << sizeof(*pointname) << endl; //输出是指针所指数列中一个元素所占内存的大小

 

  1. 指针指向数组建立对应关系时,此时指针所指的值是数组中的第一个值,指针所指的地址是数列第一个元素的地址,即:

cout << pointname << endl;

cout << &arrayname[0] << endl; //三者等价

cout << &arrayname << endl;

*pointname = arrayname[0];

pointname = &arrayname[0];

posted @ 2016-02-23 00:06  big_bear  阅读(140)  评论(0编辑  收藏  举报