机器的存储器通常由连续编号的存储单元序列组成,这些存储单元可以以单个或者相连成组的方式操纵;通常情况下,一个字节可以表示一个字符,一对相连的存储单元可以表示一个短整数,而四个相邻的字节则构成一个长整数;指针是能存放一个地址的一组存储单元,从本质上讲,指针是一个变量,而它的变量值是所指向对象(可以是变量、数组、结构、函数等)的地址;指针一般占四个字节长度的存储单元,所以sizeof(p)(p是指针)的值为4.
一、指针的声明
int *pointer;
该语句将创建一个指向int型的指针变量pointer但为对它进行初始化,不初始化指针是很危险的,因为它往往指向的是不确定的地方;所以总是应该在声明指针的时候就对它进行初始化。例如:
int *pointer =NULL;或者int *pointer =0;
这样进行初始化指针,就使它不会指向任何内存;
二、通过指针访问变量值
int number =15;
int *pointer = &number;
int result = 0;
result = *pointer +5;
表达式*pointer将计算存放在 指针存放的地址 的变量值;
其中,*叫做 间接运算符,又叫做 提取运算符;
实例代码:
------------------------
#include<stdio.h>
int main(int argc,char *argv[])
{
int number = 0;
int *pointer =NULL;
number =10;
printf("number's address is:%X./n" , &number);
printf("number's value is:%d./n" , number);
pointer = &number;
printf("pointer's value is:%X./n" , pointer);
printf("pointer's address is:%X./n" , &pointer);
printf("pointer's size is:%d./n" , sizeof(pointer));
printf("value pointed to is:%d./n" , *pointer);
}
程序执行结果
------------------------
number's address is:12FF7C.
number's value is:10.
pointer's value is:12FF7C.
pointer's address is:12FF78.
pointer's size is:4.
value pointed to is:10.
Press any key to continue