声明指针:
以下语句可以声明一个只想int类型变量的指针
int *pointer;
pointer变量的类型是int *
它可以存储任意int类型变量的地址。这条语句创建了pointer,但没有初始化它,未初始化的指针是非常危险的,所以应总是在声明指针时对它进行初始化,修改:
int *pointer = NULL
如果用已声明的的变量地址初始化pointer变量,可以使用寻址运算符&
例如:
int number = 10; int *pointer = &number;
===================================================================
通过指针访问值
使用间接运算符*可以访问指针所指的变量值
例:
int number = 15; int *pointer = &number; int result = 0;
pointer变量含有number变量的地址,所以可以在表达式中使用它计算一个新的汇总值,如下:
result = *pointer + 5
那我能否这样理解:pointer是地址,而*pointer,是这个地址上的值?下面给出解释:
int number = 10;
int *pointer = NULL;
printf("\nnuymber's address: %p", &number);
printf("\nnuymber's value: %d\n\n", number);
pointer = &number;
printf("pointer's address: %p\n", &pointer);//pointer的地址
printf("pointer's value: %p\n", pointer);//存储在pointer的值,它是number的地址
printf("pointer's value pointed to: %d\n\n", *pointer);//pointer所含地址 内 存储 的值,它是存储在number中的值
打印出:
nuymber's address: 0x7fff5fbff93c
nuymber's value: 10
pointer's address: 0x7fff5fbff930
pointer's value: 0x7fff5fbff93c
pointer's value pointed to: 10
pointer变量是number的地址,使用*pointer可以访问number的值,即间接地使用number变量的值。