关于指针的部分概念

*是地址取值运算符;
&是地址运运算符;

int a=5;
int *pri=a;       //指针变量
&pri                //指针本身的内存地址
&a                 //变量的内存地址
pri                  //*pri的内容,即是a有内存地址
*pri                //指的是a的值
*(&pri)           //将地址内存所存放的值取出,实际同pri的内容相同

指针的加减运算:
一、指针的加法运算是把指针的内容按数据类型的长度进行加法运算。
例如:
int a=5;
int *pri=a;      
pri++;
那通过查内存来看到进行加法运算后的存放在指针里的地址产生变化,地址长度加了一个数据类型的长度。

二、指针的减法运算是计算两个指针的相差的数据个数。
例如:
int a,sub;
int *ptr1,*ptr2;
ptr1=&a;
ptr2=⊂
sub=ptr1-ptr2;

sub的结果就是一个整数值,指的是两个地址相差数据类型的个数。

指针与函数
        函数有返回值,但它只能返回一个数据类型的值,但有时,我们要进行一些运算,要返多个数值是,那用指针就可以实现这个效果了。
例如:计算两数相加、相减的结果(C版)
void list_ptr(int *,int *),func(int *,int *);
int main(void)
{
    int a =20,b=15,*ptr1,*ptr2;
    ptr1=&a;
    ptr2=&b;
    list_ptr(ptr1,ptr2);
    printf("after process....\n");
    func(ptr1,ptr2);
    list_ptr(ptr1,ptr2);
    return 0;
}
void list_ptr(int *ptr1,int *ptr2)
{
    printf("*ptr1=%d,prt1=%d\n",*ptr1,ptr1);
    printf("*ptr2=%d,prt2=%d\n",*ptr2,ptr2);
}

void func(iint *ptra,int *ptrb)
{
    int i=*ptrb;
    *ptrb=*ptra+*ptrb;
    *ptra=*ptra-i;
    return ;  
}

例如:对A和B进行数值交换
void swap(int *,int *);
swab(&a,&b);//在main函数里调用下面的函数,传递两个值的地址
void swab(int *x,int *y)
{
int temp=*x;
*x=*y;
*y=temp;
return;
}




转载于:https://www.cnblogs.com/Hthree/archive/2008/06/19/1225687.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值