C语⾔函数调⽤常见问题(1)手工袋
在我看来 有许多计算问题如果通过函数调⽤⽅式来解决就会使得代码整体看起来简介⼜便于识别
但是在调⽤函数时候要注意以下⼏个问题
⼀、基本功能
1、函数调⽤,即把函数的输⼊值填进函数名后⾯的括号中,不需要注明函数类型
interchange(x, y);//⽆返回值怎么查看银行卡余额
x = interchange(x, y);//返回值为 x护士xxx
德普是谁
2、定义函数,此处重点注意:
1):⽆返回值时:
赵四小姐void interchange(int u, int v)
2):有返回值时:
double interchange(int u, int v) //double 为返回值类型
3、函数声明:重点:后⾯带有分号
void interchange(int u, int v); //⽆返回值
double interchange(int u, int v); //有返回值
但是上述⽅法要么没有返回值 , 要么只能有⼀个返回值(因为定义函数内部 return xxx 只能跟⼀个值,并且如果没有返回值,函数内部对值的计算和改变就不能影响到原来函数内部的值)
⼆、指针⽅法改变原来函数值
1、⾸先了解指针:指针(pointer)是⼀个值为内存地址的变量
ptr = &booh; // ptr 就是指针,存储的是 booh 的地址
2、运算符:红烧肉鹌鹑蛋
1):&
&nur 表⽰的是 nur 的地址
得胜归2):*
* 的后⾯跟指针名或者地址 读出该地址内部的值
nur = 22;
ptr = &nur; // 指向nur的指针
val = *ptr; //将 ptr 地址上的值 22 赋给 val
3):打印指针,即打印变量存储位置 %p
printf("%p\n",ptr); // 打印指针 ptr
4):指针在函数中的使⽤(交换函数问题具体代码):
#include<stdio.h>
void interchange(int * u, int * v); //函数声明
int main(void)
{
int x = 5, y = 10;
printf("Oringinally x = %d and y = %d.\n",x, y);
interchange(&x, &y) // 调⽤函数此处调⽤的是变量存储地址所以能改变变量的值
小学语文教学大纲
printf("Now x = %d, y = %d.\n",x, y);
}
void interchange(int * u, int * v) //函数定义 * 作⽤是读取后⾯地址中的变量的值所以此处传进来的是两个int 类型的值
{
int temp;
temp = *u; //将指针 u 指向的地址中的值传给 temp
*u = *v; //将指针 v 对应的地址中的值传到指针 u 指向的地址中
*v = temp; //将 temp 中的值传给指针 v 指向的地址中
}
注:这个函数虽然没有返回值,但是却能改变原函数中的值,这要归功于指针的作⽤,直接使得调⽤函数能够对地址中的变量进⾏改变,从⽽不需要返回值(此乃釜底抽薪)