指针是什么
指针就是地址
我们都知道计算机的内存。计算机中所有程序的运行都是在内存中进行的。所以为了有效的使用内存,就把内存划分成一个个小的内存单元,为了更好的访问内存单元,就给内存单元进行了编号,这里 “编号” 就称为 地址
指针变量
- 有变量就会有空间、变量名、变量内容,那么变量的地址如何储存我们就需要指针变量,指针变量也是普通变量,但是它里面存放的内容时变量的地址。
指针的变量及其初始化
1、&a: 取地址符(单目运算符):在此时,&的含义是去变量a的地址
scanf("%d",&a)
2、 int *p=&a;这是定义一个指针变量 这时候int *p定义了一个指向int类型指针p,
int main()
{
int a = 10;
int*p = &a;
printf("%d\n", a);
printf("%p\n", &a);
printf("%p\n", p);
system("pause");
return 0;
}
运行结果为:
10
00D8FDCC
00D8FDCC
我们可看到&a表示的是a 的地址,指针变量p表示也是a的地址
3、*p :解引用 :它所指的值是指针指向变量的值,并不是地址。
int main()
{
int a = 10;
int*p = &a;
printf("%d\n", a);
printf("%p\n", &a);
printf("%p\n", p);
printf("%d\n", *p);
system("pause");
return 0;
}
运行结果为:
10//------->对应的a的值
00EFFA74//-------->对应的是a的地址
00EFFA74//--------->对应的是a的地址
10//-------->对应的a变量的内容
- 多次解引用
int main()
{
int a = 10;
int*p = &a;
int* q = p;
printf("p = %p\n", p);
printf("*p = %d\n", *p);
printf("q = %p\n", q);
printf("*q = %d\n", *q);
system("pause");
return 0;
}
运行结果
p = 008FFCA0
*p = 10
q = 008FFCA0
*q = 10
请按任意键继续. . .
需要注意的是 int*p = a 中 p所指的是变量a的地址;*p 所指的是变量a的内容。