黑马程序员技术交流社区
标题:
函数问题
[打印本页]
作者:
a1130003724
时间:
2014-5-26 20:55
标题:
函数问题
本帖最后由 a1130003724 于 2014-5-30 13:35 编辑
请问下 可不可以在自己定义的函数内申明另一个自己定义的函数 如下
void printline()
{
void print();
printf("------------");
}
void print()
{
printf("**************");
}
如果可以当主函数调用printline时输出的是---------和***************还是只是------------?
作者:
ios风痕
时间:
2014-5-26 21:21
运行一下试试就好了
作者:
Guardian_Angel
时间:
2014-5-26 22:04
肯定是不行撒,作用域不同。
作者:
永远不会贬值
时间:
2014-5-26 22:08
可以调用,如果你想调用 应该是这样
void print();
void printline()
{
print();
printf("------------");
}
void print()
{
printf("**************");
}
int main()
{
printline();
return 0;
}
输出结果是 **************------------
作者:
liulinjie
时间:
2014-5-26 22:08
可以在函数体内声明另一个函数, 这个声明在这个函数体内有效. 在main函数中调用printline时, 因为printline里只是声明了print函数, 并没有调用它, 所以并不会打印 ***, 只打印 ---.
如果在printline函数中, 声明print函数之后还调用了它, 就会打印 ***, 并打印 ---.
作者:
yangying514
时间:
2014-5-26 23:07
不需要声明一下吗
作者:
huangqiwa
时间:
2014-5-27 16:22
可以在函数内声明函数,但是不能在函数内定义!
作者:
大龄产妇
时间:
2014-5-28 19:31
可以在自定义函数内部声明其他自定义函数,但前提是被声明的函数要在后面声明在前。输出结果是"------------",因为没有用void printline函数间接调用下面的print函数。只是在void printline()中做了一个声明而已。
作者:
xiaodixing
时间:
2014-5-29 00:19
结果是**************
----------
作者:
子城伯涵
时间:
2014-5-29 13:06
本帖最后由 子城伯涵 于 2014-5-29 13:09 编辑
这样声明只能在你声明的那个函数里调用声明的那个函数,你要是在声明的函数里调用了声明的函数,主函数调用printline();时都能输出,
代码:
#include<stdio.h>
int main()
{
void printline();
printline();//调用此函数,两个函数的输出都能输出
//print();不可以在此调用函数,因为作用域问题在此printline()的内存空间已经销毁了,内存中已经没有print()的声明了
return 0;
}
void printline()
{
void print();
print();//可以在此调用,如果在此没有调用这个函数,那么就不会打印出******
printf("------------");
}
void print()
{
printf("**************");
}
作者:
a1130003724
时间:
2014-5-30 13:34
liulinjie 发表于 2014-5-26 22:08
可以在函数体内声明另一个函数, 这个声明在这个函数体内有效. 在main函数中调用printline时, 因为printline ...
喔知道了 谢谢
作者:
tony_ygz
时间:
2014-5-30 18:39
原来还可以这样啊····
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2