由于指针可以直接引用它所指向的数值,数值是有类型的,因此在声明指针的时候要指明它所指向的数据类型。
指向一个整型(int)或浮点型(float)数据的指针与指向一个字符型(char)数据的指针并不相同。
因此,声明指针的格式如下:
type * pointer_name;
这里,type 是指针所指向的数据的类型,而不是指针自己的类型。例如:
int * number; char * character; double * decimals; |
它们是3个指针的声明,每一个指针指向一种不同数据类型。这三个指针本身其实在内存中占用同样大小的内存空间(指针的大小取决于不同的操作系统),但它们所指向的数据是不同的类型,并占用不同大小的内存空间,一个是整型int,一个是字符型char ,还有一个是浮点型float。
需要强调的一点是,在指针声明时的星号asterisk (*) 仅表示这里声明的是一个指针,不要把它和前面我们用过的引用操作符混淆,虽然那也是写成一个星号 (*)。它们只是用同一符号表示的两个不同任务。
一个简单的例子:例1
//my first pointer#include | 输出:firstvalue is 10secondvalue is 20 |
注意变量firstvalue 和 secondvalue 是怎样间接被赋予数值的。首先我们使用 ampersand sign (&) 将firstvalue的地址赋给mypointer 。然后我们将10 赋给 mypointer所指向的数值,它其实指向firstvalue的地址,因此,我们间接赋予了firstvalue的数值。
为了让你了解在同一个程序中一个指针可以被用作不同的数值,我们在这个程序中用value2 和同一个指针重复了上面的过程。
一个稍复杂的例子,让你更深理解指针:例2
//second example#include | 输出:firstvalue is 10secondvalue is 20 |
注释写的很清楚了,自己要多练去理解。