博物馆网站模版,android开发框架有哪些,海口的网站建设,单页面中添加wordpress的评论目录
一.简介 1.函数声明#xff1a;不需要实现这个函数的功能2.函数定义#xff1a;必须实现这个函数的功能3.函数调用#xff1a;调用之前必须先声明或者定义 二.函数值传递三.函数址传递四.函数值传递和址传递区别五.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 不需要实现这个函数的功能2.函数定义必须实现这个函数的功能3.函数调用调用之前必须先声明或者定义 二.函数值传递三.函数址传递四.函数值传递和址传递区别五.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 C 语言基础入门 一.简介
函数声明只是一个空壳不会有具体的函数实现而定义要实现函数的实现例如
1.函数声明不需要实现这个函数的功能
int sub(int x,int y); //只需要声明即可不需要实现这个函数的功能2.函数定义必须实现这个函数的功能
int sub(int x,int y) 需要实现这个函数的功能
{return (x-y);
}3.函数调用调用之前必须先声明或者定义
函数在调用之前必须声明或者定义否则会报错找不到标识符,这也是为什么 hello world 中调用 printf 函数必须要包含 stdio.h 头文件的原因
二.函数值传递
在 C 语言中函数的参数传递方式有两种值传递与地址传递。
**值传递使用变量、常量、数组元素作为函数参数在调用结束后形参值的任何变化都不会影响到实参的值。**举个例子
/******************************************************************************************/
//Author:猿说编程
//Blog(个人博客地址): www.codersrc.com
//File:C语言 函数值传递和址传递
//Time:2021/06/20 08:00
//Motto:不积跬步无以至千里不积小流无以成江海程序人生的精彩需要坚持不懈地积累
/******************************************************************************************/ #include stdio.h
void func(int x, int y)
{x 100;y 200;printf(funcx %d, y %d\n, x, y);
}
int main(void)
{int a10;int b20;/*变量a、b为func函数的实际参数*/func(a, b);printf(maina %d, b %d\n, a, b);return 0;
}
/*
输出
funcx 100, y 200
mainx 10, y 20
*/main 函数中调用 func 函数以整数类型 ab 作为实参传递虽然在 func 函数中形参 xy 值发生改变但是并以不会影响 main 函数中 ab 的值这就是所谓的值传递
三.函数址传递
在 C 语言中函数的参数传递方式有两种值传递与地址传递。
**址传递使用指针变量或者内存地址作为函数参数在调用结束后实参跟随形参一起变化。**举个例子
/******************************************************************************************/
//Author:猿说编程
//Blog(个人博客地址): www.codersrc.com
//File:C语言 函数值传递和址传递
//Time:2021/06/20 08:00
//Motto:不积跬步无以至千里不积小流无以成江海程序人生的精彩需要坚持不懈地积累
/******************************************************************************************/ #include stdio.h
void func(int *x, int *y)
{*x 100;*y 200;printf(funcx %d, y %d\n, x, y);
}
int main(void)
{int a10;int b20;/*分别对变量a、b取地址并作为func函数的实际参数*/func(a, b);printf(maina %d, b %d\n, a, b);return 0;
}
/*
输出
funcx 100, y 200
mainx 100, y 200main 函数中调用 func 函数分别对变量 a、b 取地址并作为 func 函数的实参传递由于形参 x 和实参 a形参x和实参 a 指向同一个内存地址在 func 函数中形参 xy 值发生改变main 函数中 ab 的值也会跟着一起改变这就是所谓的址传递
四.函数值传递和址传递区别
值传递实参是传递的值并非地址形参的值发生改变实参不受影响址传递实参是传递的地址并非值形参的值发生改变实参会跟着一起改变因为实参和形参都是指向同一块内存地址
五.猜你喜欢
C语言逻辑运算符C语言三目运算符C语言逗号表达式C语言 sizeof 和 strlen 函数区别C语言 strcpy 和 strcpy_s 函数区别C语言 memcpy 和 memcpy_s 区别C语言 数组定义和使用C语言 数组遍历C语言 数组下标越界C语言 数组内存溢出C语言 数组下标越界和内存溢出区别C语言 二维数组定义和使用C语言 二维数组行数和列数计算C语言 指针声明和定义C语言 指针 p / p–C语言 p/§/_(p)/_pC语言 使用指针遍历数组C语言 指针和数组区别C语言 数组指针C语言 指针数组C语言 指针数组和数组指针区别C语言 空指针 NULLC语言 void 指针C语言 野指针C语言 函数声明和定义C语言 函数声明和调用C语言 函数值传递和址传递
未经允许不得转载猿说编程 » C语言 函数值传递和址传递