笔记:指针的作用123

作用1:操作其他函数的变量

        也就是说,把变量变成地址(门牌号),不再是单单传递变量,而是从根上传递地址,地址不会变。

        例子:swap函数交换数据   

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void swap(int* p1, int* p2);
int main() 
{
    int a = 10;
    int b = 20;


    swap(&a,&b);
    printf("%d,%d\n",a,b);
}

void swap(int* p1, int* p2)
{
    int temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}

作用2:返回多个值

       多个值被需要的情况下

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void MaxandMin(int a[], int len, int* max, int* min);

int main() 
{
    int a[] = { 1,2,3,4,5,6,7,8,9 };
    int len = sizeof(a) / sizeof(int);

    int max = a[0];
    int min = a[0];

    MaxandMin(a, len, &max, &min);
    printf("%d,%d",max,min);
}

void MaxandMin(int a[],int len,int* max,int* min)
{
    *max = a[0];
    for (int i=1; i < len; i++)
    {
        if (a[i] > *max)
        {
            *max = a[i];
        }
    }

    *min = a[0];
    for (int i=1; i < len; i++)
    {
        if (a[i] < *min)
        {
            *min = a[i];
        }
    }


}

作用3:利用指针将函数的结果和状态分开

 定义一个变量来接收返回值

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>


int main() 
{
    int a = 10;
    int b = 9;
    int c = 0;

    

    int g = getR(a, b, &c);  //用g来接收
    if (g ==66)
    {
        printf("没有余数");
    }
    else
    {
        printf("%d",c);
    }

}

int getR(int a,int b,int* c)
{
    if (b==0)
    {
        return 66;
    }
    *c = a % b;
    return 88;

 指针的本质是用地址来代替变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值