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的值,即字符串长度
}