C语言调用函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言调用函数相关的知识,希望对你有一定的参考价值。
以下是头文件里编写的代码
void myname(struct ex *p)
int i=0,j=0,a=0;
do
printf("Name:");
scanf("%s",&(*p).name);
printf("Number:");
scanf("%s",&(*p).num);
printf("Score:");
for(i=0;i<N;i++)
scanf("%f",&(*p).s[i]);
printf("Wether to continue?\n");
printf("Please continue to press 1\nOtherwise,Please press 2\n");
scanf("%d",&a);
j++;
while(a==2);
以下是调用函数代码
#include<stdio.h>
#include<myself.h>
#define N 3
struct ex
char name;
char num;
double s[N];
;
int main()
struct ex *p;
myname(p);
求大神帮忙看看应该怎么调用才正确,总是弄不对。有下面四个错误
--------------------Configuration: 草稿 - Win32 Debug--------------------
Compiling...
草稿.c
d:\microsoft visual studio\vc98\include\myself.h(8) : error C2037: left of 'name' specifies undefined struct/union 'ex'
d:\microsoft visual studio\vc98\include\myself.h(10) : error C2037: left of 'num' specifies undefined struct/union 'ex'
d:\microsoft visual studio\vc98\include\myself.h(12) : error C2065: 'N' : undeclared identifier
d:\microsoft visual studio\vc98\include\myself.h(14) : error C2037: left of 's' specifies undefined struct/union 'ex'
Error executing cl.exe.
草稿.obj - 4 error(s), 0 warning(s)
struct ex
char name;
char num;
double s[N];
;
以上这几行要挪到你的头文件的最开头。
代码里的%f要改为%lf。
这样,编译就不会报错了。
但一运行程序就会崩溃,因为还有两个问题:
1)
int main()
struct ex *p;
myname(p);
要改成:
int main()
struct ex p;
myname(&p);
2)
char name; ---》只有一个字节的空间,不论怎么输入都会内存越界,最好改用char数组
char num;---》只有一个字节的空间,不论怎么输入都会内存越界,最好改用char数组 参考技术A 以下是头文件里编写的代码
void myname(struct ex *p)
int i=0,j=0,a=0;
do
printf("Name:");
scanf("%s",&(*p).name);
printf("Number:");
scanf("%s",&(*p).num);
printf("Score:");
for(i=0;i<N;i++)
scanf("%f",&(*p).s[i]);
printf("Wether to continue?\\n");
printf("Please continue to press 1\\nOtherwise,Please press 2\\n");
scanf("%d",&a);
j++;
while(a==2);
以下是调用函数代码
#include<stdio.h>
#include<myself.h>
#define N 3
struct ex
char name;
char num;
double s[N];
;
int main()
struct ex *p;
myname(p);
求大神帮忙看看应该怎么调用才正确,总是弄不对。有下面四个错误
--------------------Configuration: 草稿 - Win32 Debug--------------------
Compiling...
草稿.c
d:\\microsoft visual studio\\vc98\\include\\myself.h(8) : error C2037: left of 'name' specifies undefined struct/union 'ex'
d:\\microsoft visual studio\\vc98\\include\\myself.h(10) : error C2037: left of 'num' specifies undefined struct/union 'ex'
d:\\microsoft visual studio\\vc98\\include\\myself.h(12) : error C2065: 'N' : undeclared identifier
d:\\microsoft visual studio\\vc98\\include\\myself.h(14) : error C2037: left of 's' specifies undefined struct/union 'ex'
Error executing cl.exe.
草稿.obj - 4 error(s), 0 warning(s)
C语言中函数怎么自己调用自己
一,函数调用的一般形式为:函数名(实参列表);
实参可以是常数、变量、表达式等,多个实参用逗号,分隔。
在c语言中,函数调用的方式有多种,例如:
在函数调用中还应该注意的一个问题是求值顺序的问题。所谓求值顺序是指对实参列表中各个参数是自左向右使用呢,还是自右向左使用。对此,各系统的规定不一定相同。
【示例】在vc6.0下运行以下代码。
运行结果:
8
7
6
7
可见vc
6.0是按照从右至左的顺序求值。如果按照从左至右求值,结果应为:
9
10
9
8
函数的嵌套调用
函数不能嵌套定义,但可以嵌套调用,也就是在一个函数的定义中出现对另一个函数的调用。这样就出现了函数的嵌套调用,即在被调函数中又调用其它函数。
【示例】计算sum
=
1!
+
2!
+
3!
+
...
+
(n-1)!
+
n!
分析:可以编写两个函数,一个用来计算阶乘,一个用来计算累加的和。
#include
//求阶乘
long
factorial(int
n)
int
i;
long
result=1;
for(i=1;
i<=n;
i++)
result
*=
n;
return
result;
//
求累加的和
long
sum(long
n)
int
i;
long
result
=
0;
for(i=1;
i<=n;
i++)
//嵌套调用
result
+=
factorial(n);
return
result;
int
main()
printf("1!+2!+...+9!+10!
=
%ld\n",
sum(10));
return
0;
二,有些自定义函数可能会被频繁的调用,所以写在一个c文件里是不太方便的。应该把这些自定义的函数写在一个c文件里,同时在一个头文件.h文件里声明。主函数可以通过引用该头文件然后调用需要的自定义函数。
1,举例:在头文件(.h)里声明自定义函数
2,在一个c语言文件里写下自定义函数的实现
3,在主函数中调用自定义函数
4,最后编译所有的涉及到的c文件,头文件可以不管 参考技术A
你说的是递归调用,举例:
int fun(int x)int y;
if(x>2)
y=fun(x-1)*fun(x-2);
else
y=1;
return y;
void main(void)
int n=8;
printf("%d",fun(n));
参考技术B 回答
您稍等一下哦,马上就好,感谢您的等待
Copyright © 1999-2020, CSDN.NET, All Rights Reserved 登录塔塔君Minkun关注c语言中怎么调用自己定义的函数,c语言中怎么调用自己定义的函数? 转载2021-05-24 21:19:26 1点赞塔塔君Minkun 码龄4年关注一,函数调用的一般形式为:函数名(实参列表);实参可以是常数、变量、表达式等,多个实参用逗号,分隔。在C语言中,函数调用的方式有多种,例如:在函数调用中还应该注意的一个问题是求值顺序的问题。所谓求值顺序是指对实参列表中各个参数是自左向右使用呢,还是自右向左使用。对此,各系统的规定不一定相同。【示例】在VC6.0下运行以下代码。运行结果:8 7 6 7可见VC 6.0是按照从右至左的顺序求值。如果按照从左至右求值,结果应为:9 10 9 8函数的嵌套调用函数不能嵌套定义,但可以嵌套调用,也就是在一个函数的定义中出现对另一个函数的调用。这样就出现了函数的嵌套调用,即在被调函数中又调用其它函数。【示例】计算sum = 1! + 2! + 3! + ... + (n-1)! + n!分析:可以编写两个函数,一个用来计算阶乘,一个用来计算累加的和。#include//求阶乘long factorial(int n)int i;long result=1;for(i=1; i<=n; i++)result *= n;return result;// 求累加的和long sum(long n)int i;long result = 0;for(i=1; i<=n; i++)//嵌套调用result += factorial(n);return result;int main()printf("1!+2!+...+9!+10! = %ld\\n", sum(10));return 0;二,有些自定义函数可能会被频繁的调用,所以写在一个C文件里是不太方便的。应该把这些自定义的函数写在一个C文件里,同时在一个头文件.h文件里声明。主函数可以通过引用该头文件然后调用需要的自定义函数。1,举例:在
参考技术C 二楼正解,递归调用 int fun()fun();
参考技术D 直接调用 跟调用其他函数没区别追问
举个例子吧
追答void a()
a();
就像这样
别试这个, 会死机
这样能行吗
追答从函数的调用原理来说
调用自己跟调用别的函数是没有区别的
加一句, 调用的那个”自己“ 还会 继续调用 “自己” 所以你得指定 什么 时候 不再 调用 自己 , 这样就能让函数 自己退出 , 不然 内存 会 刷完, linux上 内核会把进程 强杀了 , windows上会死机
以上是关于C语言调用函数的主要内容,如果未能解决你的问题,请参考以下文章