指针
指针定义
//定义普通变量
float a = 99.5, b = 10.6;
char c = '@', d = '#';
//定义指针变量
float *p1 = &a;
char *p2 = &c;
//修改指针变量的值
p1 = &b;
p2 = &d;
*是一个特殊符号,表明一个变量是指针变量,定义 p1、p2 时必须带*。而给 p1、p2 赋值时,因为已经知道了它是一个指针变量,就没必要多此一举再带上*,后边可以像使用普通变量一样来使用指针变量。也就是说,定义指针变量时必须带*,给指针变量赋值时不能带*
修改数据
#include <stdio.h>
int main(){
int a = 15, b = 99, c = 222;
int *p = &a; //定义指针变量
*p = b; //通过指针变量修改内存上的数据 //a=99,*p=99;
c = *p; //通过指针变量获取内存上的数据 //c=99
printf("%d, %d, %d, %d\n", a, b, c, *p); //输出结果:99,99,99,99
return 0;
}
指针与一维数组
定义:
eg1:int x[3]={4,5,6};int *p; eg2:int x=12;
p=&x; int *p=x;
eg3:
表示:地址[ ]
*(地址)
|
序号
|
0
|
1
|
2
|
|
内容
|
4
|
5
|
6
|
|
地址
|
*a | *(a+1) | *(a+2) |
| p | *p | *(p+1) | *(p+2) |
例1:

运行结果:4,5,6
4,5,6
4,5,6
4,5,6
分析:*a=当前地址为首地址,即a[0]=4;
*(a+1)=首地址偏移一个位置,即a[1]=5;
p同理
例2:

运行结果:5,6,6 分析:(a+1)[0]=当前地址(a+1)为首地址偏移0个位置
5,6,6 5 ——>(a+1)[0]=5;
(a+1)[1]=当前地址(a+1)为首地址偏移1个位置
5 +1 ------>(a+1)[1]=6;

浙公网安备 33010602011771号