初阶指针2021-10-31

1.我们知道,在一个函数中,只能返回一个值,那么如何引用函数来改变主函数的多个值呢?

在调用函数时,退出函数后会将函数中定义的变量销毁,因此无法直接在函数中定义变量以达到改变主函数多个值的目的,因此我们可以考虑在调用函数中改变主函数变量所指地址的值,即使用指针来改变主函数变量的值。

设我们现在在主函数有两个整型变量a和b,值均为3,我们想要调用函数改为3的二倍和3的平方,我们要怎么实现呢。这里将调用的函数命名为change()

#include<stdio.h>
void change(int* x,int* y);
int main()
{
    int a=3, b=3;

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

    return 0;
}

void change(int* x,int* y)
{
    *x = 2 * *x;
    *y = *y * *y;
}

我们要改变主函数变量所指地址的值,所以将调用函数的形参设置为指针,再将a和b的地址作为实参进入change()函数,在change()函数中,通过对*x和*y的解引用改变所指地址的值。因此,虽然该函数并没有返回值,但是将a和b所指地址的值改变了,那么打印出来的a和b自然是改变之后的值。

2.使用指针求字符串长度

我们知道,一个字符串的最后是以'\0'结尾的,因此我们可以编写一个函数来求字符串的长度

int strlen2(char* arr)
{
    char* start=arr;
    char* end=arr;  //定义两个字符指针start和end都指向字符串的第一个元素
    while(*end!='\0')//判断end是否指向字符串结尾的'\0'
    {
        end++;   //将指针end向后移动一个元素
    }
    return end - start;//返回end-start的值,即字符串长度
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值