指针¶
内存的特点¶
计算机的内存指的不是物理内存 ,而是操作系统管理的一段内存空间
-
内存是线性连续的内存排列
-
内存的最小单位:byte 字节
-
每个内存地址都有一个编号
指针¶
指针就是内存单元编号
通过变量和指针都可以操作对应的内存空间
指针访问内存运算符
&:取地址运算符
*:间接寻址运算符
例子:
int a = 10;
//取地址并打印
printf("%p\n",&a);
//获取地址上的变量值
printf("%d\n",*&a);
指针变量
保存指针(内存地址)的变量
- 指针类型 指针变量对应的类型
- 指针的数据类型 指针指向的数据类型
- 指针的数据类型:不决定指针变量占用内存的大小 决定通过指针变量访问指向的内存空间的大小
指针应用:返回多个值
#include <stdio.h>
int add(int a,int b){
return a+b;
}
int dep(int a,int b){
return a-b;
}
void cacl(int a,int b,int *pcount,int *presult){
*pcount =a+b;
*presult = a-b;
}
int main(){
int a=10;
int b=20;
int count;
int result;
// count = add(a,b);
// result = dep(a,b);
cacl(a,b,&count,&result);
printf("count=%d result=%d\n",count,result);
return 0;
}
指针的运算
指针的运算只有加减运算
- 加 指针p+N 指针p+N*sizeof(指针变量p指向的数据类型)
- 减 指针p-N 指针p-N*sizeof(指针变量p指向的数据类型)