浅谈指针(一)*的两个不同用处

对于C或者C++而言,指针很难,特别地,对于自学者而言,更难!

一、*的两个不同用处

1. 以int *a为例说明:

1)表示申明一个指针,是指向int型的一个地址。

2)如果是全局变量,则初始为null,如果是局部变量,则由系统给一个随机地址,从而会具有一定风险。

3)其长度为8。

4)可以赋以初值,方法如下:

int a;
int *b=&a;

第一行代码申明一个int型变量a,这个变量如果是全局的,则初始值为NULL,如果是局部的,则系统给一个随机值(注意是值,不是地址)。变量a有两重属性:一是它具有值,二是它具有地址。通常,我们说a=3,就是说a的值是3。那么它的地址是什么——是&a。所以,变量a的值是a,变量a的地址是&a。

第二行代码,申明了一个指向int型的指针b,它的初始地址是&a。需要作一个说明,int *是用来修饰指针b的,而不是用int来修饰*b。这里的int *是一个整体。

2.以*a=3为例说明:

int *a;
*a=3;

第一行代码申明一个int型指针a。

第二行代码表示在指针a对应的地址内存中装入整数3。

如果a是全局的,则指针a=NULL,从而将导致第二行代码出错,因为零地址内存中没有办法装入整数3。

如果a是局部的,系统给它一个随机的地址,只要是安全的,则第二行代码就在这个安全的地址内存中装入整数3。

3.小结:*位置不同,含义不同。

1) int *a——表示申明一个指针a,它是指向int型的地址。int *是一个整体,用来修饰a。

2) *a (前面没有int)——表示在指针a对应的地址内存中装入的值。*a作为一个整体,表示值。单独的a,表示指针。

猜你喜欢

转载自blog.csdn.net/qq_36314344/article/details/81536513