以下程序执行时显示func未定义,请问要如何修改?

以下程序执行时显示func未定义,请问要如何修改?,第1张

您好,很高兴回答您谨此的问题。

在c语言中,程序运行是直接运行主函数的,其他的函数都是在被调用的时候才会运行。那么在运行被调用函数之前就要知道这个函数相关信息,如函数名,返回值类型,函数参数等信息。若没有这些信息时,就会显示该函数未定义,此时只链晌汪要在调用该函数的函数前面加上函数的申明即可。就是上面那位朋棚仔友的说法了。

#include <stdio.h>

int main()

{

  int k = 4, m = 1, p

  p = func (k, m)

 扮亏逗 printf("p = %d\n" , p)

  p = func(k, m)

  printf("p = %d\n" , p)

  return 0

}

int func(int a, int b)

{

  static int m,i=2

  printf("m = %d, i = %d\n" , m, i)

  i += m+1

  printf("i = %d," ,i)

  m = i+a+b

  printf("m = %d\n" ,m)

  return(m)

}

先说两件事

这两张图片治好了我的颈椎病

static int m, i=2

     这里面m的值没有初始化, 这应该是不应该的, 我敢说题有问题

根据上面的打印, 可以看出我的编译器将m的初始值定为0

为了区别两个m, 下面将main()里面定义的m写为大写M

第一次func, 输入值a = k = 4, b = M = 1

i =  i + m + 1 = 2 + 0 + 1 = 3

m = i + a + b = 3 + 4 + 1 = 8

第一次func, 输入值a = k = 4, b = M = 1

i =  i + m + 1 = 3 + 8 + 1 = 12

m = i + a + b = 12 + 4 + 1 = 17

这题主要考的就是全局变量局部变量区别, 静态变量与非厅卖静态变量的区别

在func里面定义的m作用域就在func函数里面,

在main()函数里面出现相同的变量m作用域是在main()函数里, 有区别

static类型的静态变量有个特点, 就是只初始化一次

第一次空念调用func() 将m, i 的数值初始化了,

并且经过运算最总 m =8, i = 3

第二次调用func()的时候m, i的数值不再次初始化, 依然是以前的数值 8, 3


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12558377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存