指针

地址和指针的概念

  • 地址

    当我们在程序中定义了一个变量之后,系统会给这个变量分配储存空间。不同的变量类型,系统分配的内存长度也不同,整型变量2个字节,浮点型变量4个字节,字符变量1个字节。内存区的每一个字节都有一个编号,就像宾馆房间号都有房间号一样,这就是地址。在内存中存放数据,就和房间里住了个人一样。对变量值的存取是通过地址实现的。比如说定义了整型变量i,编译时系统分配2000,2001这两个字节给它,需要输出时系统再找到变量i的地址从2000往后的两个字节,把它输出出来。

  • 指针
    在c语言中,除了整型,浮点型,字符型变量,还有一种专门存放变量地址的特殊变量,它可以将整型变量i的地址存进自身,当需要变量i时,可以通过它知道变量i的地址,再通过地址找到变量i在内存单元中的值。由于通过地址可以找到变量的内存单元,我们可以说地址指向该变量单元就像一个房间号指向一个房间一样。所以在C语言中地址被称作指针。
    一个变量的地址称作变量的指针。而专门用来存储指针的那个特殊变量就是指针变量。指针变量中存放的值就是地址(指针)。

变量的指针和指向变量的指针变量

为了表示变量和它所指变量之间的联系,在程序中用“*”符号表示“指向的对象”。

  • 定义一个指针变量

    在C语言中所有变量使用前都是要定义的,指定其类型,为其分配存储空间,指针变量是为了存放地址的变量,使用前必须定义。就像:
    int i, j;
    int * pointer_1, pointer_2;
    定义指针变量的一般形式为:
    基类型 * 指针变量名;

  • 指针变量前面的*表示该变量时指针变量。

  • 基类型是定义指针变量的时必须指定的,它用来指定指针变量可以指向的变量的类型,int类型的指针变量可以指向整形变量,而不能指向其他类型变量。

  • 一个指针变量只能指向同一个类型的变量,不能一会指向整型变量,一会指向浮点型变量。

  • 可以用赋值语句使一个指针变量得到另一个变量的地址,让它指向一个变量。pointer_1 = &a, pointer_2 = &b;p1、p2表示a, b在内存单元的地址。而*p1则表示,这块内存地址中的值。

    指针变量做函数参数
    函数的参数不仅是整形、浮点型、字符型等数据,还可以是指针型,作用是将变量的地址传给另一个函数中。

#include<stdio.h>

void swap(int * p1, int * p2);

int main()
{
  int a, b;
  int * pointer_1,* pointer_2;
  scanf("%d %d", &a, &b);
  if(a < b) swap(pointer_1, pointer_2);
  printf("\n%d %d\n", a, b);
}
void swap(int * p1, int * p2)
{
    int t;
    t = *p1;
    *p1 = *p2;
    *p2 = t;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值