跳转至

指针

内存的特点

计算机的内存指的不是物理内存 ,而是操作系统管理的一段内存空间

  • 内存是线性连续的内存排列

  • 内存的最小单位: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指向的数据类型)