前言
每一个变量都有一个内存位置,每一个内存位置都定义了,可使用 &(取地址运算符) 运算符访问的地址,它表示了在内存中的一个地址。
&的用法:
&数据对象
//获取数据对象首地址和所需存储空间大小
1.什么是指针?
指针也就是内存地址,指针变量是用来存放内存地址的变量。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。
2.如何声明指针?
//目标数据类型* 变量名
//目标数据类型*变量名
//目标数据类型 *变量名
int n;
int* pn=&n;
//int*pn=&n;
//int *pn=&n;
//pn用于保存变量n的首地址和所需空间大小
//我们把pn称作n的指针;或者pn指向n.
3.探究指针输出的值
- 指针通过值来表示目标数据对象的首地址
- 指针的大小在32位平台是4字节,在64位平台是8字节
#include<stdio.h>
int main()
{
int n1;
int n2;
int n3;
int n4;
int* pn1=&n1;
int* pn2=&n2;
int* pn3=&n3;
int* pn4=&n4;
printf("pn1=%u\n",pn1);
printf("pn2=%u\n",pn2);
printf("pn3=%u\n",pn3);
printf("pn4=%u\n",pn4);
return 0;
}
运行结果:为n1到n4的首地址
4.如何使用指针?
*指针运算符:*指针 根据指针中存储的首地址和空间大小找到目标数据对象
1.查询目标数据对象的值
#include<stdio.h>
int main()
{
int n=666;
int* pn=&n;
printf("pn=%u\n",pn);
printf("*pn=%d\n",*pn);
return 0;
}
运行结果:
2.修改目标数据对象的值
#include<stdio.h>
int main()
{
int n=0;
int* pn=&n;
char c=0;
char* pc=&c;
//通过指针修改目标数据对象的值
*pn=666;
*pc='A';
printf("pn=%u\n",pn);
printf("n=%d\n",n);
printf("pc=%u\n",pc);
printf("c=%c\n",c);
return 0;
}
运行结果:
5.强制转换指针类型
#include<stdio.h>
int main()
{
int n=65;
int* pn=&n;
char* pc=(char *)pn;
printf("pn=%u\n",pn);
printf("pc=%u\n",pc);
printf("*pn=%d\n",*pn);
printf("*pc=%c\n",*pc);
return 0;
}
运行结果: