数组-指针-引用

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

一、指针的概念

指针是内存中的地址。

1、语法:类型 * 变量名

这里的类型是定义了这个指针指向的变量类型。

2、指针的运算符(*和&)

&取地址符

例如:

int counta=100;

int * mm;

mm=&counta;

假设counta所在地址是2000,这是候m=2000。

#include

void main()

{

int counta=100;

int * mm;

mm=&counta;

cout

}

*返回这个地址的值,与&正好相反。

#include

void main()

{

int p,counta=100;

int * mm;

mm=&counta;

p=* mm;

cout

}

3、指针的赋值

#include

void main()

{

int x;

int * p1,* p2;

p1=&x;

p2=p1;

cout

}

结果:0x0012FF7C

4、指针的运算

指针的++与--是将指针的地址移动所属变量类型位数。

char 8

int 16

long 32

float 32

double 64

5、指针与数组

数组声明:类型 变量名[长度]

没有下标的“一维”数组名就是一个指向该数组第一个元素的指针。

#include

void main()

{

int x[3]={1,2,3};

int * p1;

p1=x;

cout

}

a、等价关系:

如:char c[10];

c 和 &c[0] 是等价的。

再如:char c[2][3];

c 和 &c[0][0] 是等价的。

*(c+12) 和 &c[1][2] 是等价的。

b、数组与指针的关系

1一维数组的指针

#include

void main()

{

int x[2]={1,2};

int * p1;

p1=x;

cout

cout

}

2二维数组的指针

#include

void main()

{

int

x[2][3]={1,2,3,4,5,6};

//int x[2]={1,2};

int * p1;

p1=&x[0][0]; //二维数组给指针不能用"p1=x"这个来赋值,只能是“p1=x[2]”

cout

cout

cout

cout

cout

cout

cout

cout

cout

cout

cout

cout

//规律:* (p1+((1*3)+2))

}

思考:指针是地址,那么如果想得到某地址的变量用什么方法。

二、将引用和指针相比较

引用是变量的别名。

#include

void main()

{

int * p1,a=100;

int & y1=a; //必须直接赋值

p1=&a;

y1=a;

cout

cout

}

指针和引用可以达到同样的效果。

#include

void main()

{

void funca(int & vala);

void funcp(int * valp);

int a=100,b=100;

int & y1=a; //必须直接赋值,而且只能赋值一次

funca(a);

funcp(&b);

cout cout }void funca(int & vala){ vala=200;}void funcp(int * valp){ * valp=500;}三、*和&的用途,避免这些符号在使用上发生混淆1、*的作用: 1乘号 2指针定义符号 3返回某个地址的值2、&的作用: 1位运算中的“与” 2取地址符 3引用

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有