C语言 指针

1.定义

  指针是一个值为内存地址的变量(或数据对象)。正如char类型变量的值是字符,int类型变量的值是整数,指针变量的值是地址。

例:假设指针变量名是ptr,ptr = &a;// 把a的地址赋给ptr,或者说ptr指向a。ptr和&a的区别是ptr是变量,而&a是常量。或者说ptr是可修改的左值,而&a是右值。

ptr = &b;// 改变了ptr的指向,把ptr指向b。

2.间接运算符 *

* :后跟一个指针名或地址时,*给出储存在指针指向地址上的值.

ptr = &b;

使用间接运算符 * 找出储存在b中的值:a = *ptr;//找出ptr指向的值。

语句ptr = &b;和a = *ptr;放在一起相当于 a = b;。

3.声明指针

  声明指针变量时必须指定指针所指向变量的类型。例如:

int *a; // a是指向int类型变量的指针

char *b; // b是指向char类型变量的指针

float *c, *d; // c和d都是指向float类型变量的指针

  类型说明符表明了指针所指向对象的类型,星号(*)表明声明的变量是一个指针。int *a;声明的意思是a是一个指针,*a是int类型。那么a的类型就是“指向int类型的指针”。a的值是一个地址,C语言专门为指针提供了%p格式的转换说明。

指针的指向类型和数据类型的大小

例:指向int类型、char类型、double类型和float类型的指针

指针的数据类型大小在32位里面是4个字节,64位里面是8个字节,不会因为指向的数据类型而发生改变.

4、使用指针在函数中交换数值

例:swap.c

 首先看函数的调用:interchange(&x, &y);该函数传递的不是x和y的值,而是它们的地址。这意味着在interchange()原型和定义中的形参a和b将地址作为它们的值。因此,应把它们声明为指针。由于x和y是整数,所以a和b是指向整形变量的指针,声明如下:

void interchange(int *a, int *b)

接下来,在函数体中声明一个交换值时必需的临时变量:int temp;

通过temp = *a;把x的值储存在temp中。a的值是&x,所以a指向x。这意味着*a可以表示x的值。

与此类似,把y的值赋给x:*a = *b; 这条语句相当于: x = y。

总结:交换x和y的值, 把x和y的地址传递给函数,让interchange()访问这两个变量。使用指针和 *运算符,该函数可以访问储存在这些位置的值并改变它们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值