指针简介

指针:是一个值为内存地址的变量(或数据对象)。正如char类型变量的值是字符,int类型变量的值是整数,指针变量的值是地址。在C语言中,指针有许多用法,接着会介绍指针作为函数参数使用

假设一个指针变量名是ptr.可以编写如下语句:

ptr=&pooh;   //把Pooh 赋给ptr

对于这条语句,我们说ptr指向pooh。ptr和poor的区别是ptr 是变量,&pooh是常量。或者说ptr是可修该的左值,而&pooh是右值,还可以把ptr指向别处:

ptr=&bah;   //把ptr指向bah 而不是Pooh

现在tpr的值是bah的地址

间接运算符

假设已知ptr 指向bah,然后使用间接运算找出存储在bah中的值,该运算有时也被称为解引运算符,不要把间接运算符和二元乘法运算符混淆,虽然他们使用符号相同但是他们的功能并不相同。

val=*ptr;    //找出ptr指向的值

语句ptr=&bah;和val=*ptr;   放在一起相当于下面的语句

val=bah;

由此可见,使用地址和间接运算可以直接完成上面这条语句的功能

总结:与指针相关的运算符

地址运算符:&

一般注释:

后跟一个变量名时,&给出该变量的地址   &nurse表示变量nurse 的地址。

地址运算符;       *

一般注释:后跟一个指针或地址这是,*给出储存在指针指向地址的值。

nurse =22;

ptr=&nurse       ;//指向nurse 的指针

val=*ptr;             //把ptr 指向的地址值的值赋给val

执行上面语句的结果是把22赋给val

指针的申明

申明指针变量时必须指定指针所指向变量的类型,因为不同的变量类型占用不同的存储空间,一些指针操作要求知道操作对对象的大小,,另外,程序必须知道存储在指定地址上的数据类型。long 和 float可能占用相同的额存储空间,但是他们储存的数字却是大相径庭。

int *pi ;                //  pi是指向int 类型的指针

char*pc;          

float*pf,*pg;                  pf pg 都是指向float 类型的变量指针

类型说明符指明了指针所指向的对象类型,*表明声明的变量是一个指针。int*pi;申明的意思是pi是一个指针,*pi是int类型

*和指针之间的空格可有可无

使用指针在函数间通信

//swap3--使用指针解决交换函数的问题
#include<stdio.h>
void interchange(int*u, int*v);
int main(void)
{
    int x = 5, y = 10;
    printf("Originally x=%d and y=%d.\n", x, y);
    interchange(&x, &y);            //把地址发送给函数
    printf("Now x=%d and y=%d.\n", x, y);
    return 0;
}
void interchange(int*u, int *v)
{
    int temp;
    temp = *u;             //temp获得u所指向对象的值
    *u = *v;
    *v = temp;
}


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值