A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a1130003724 中级黑马   /  2014-5-26 20:55  /  1591 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 a1130003724 于 2014-5-30 13:35 编辑

请问下 可不可以在自己定义的函数内申明另一个自己定义的函数 如下   
void printline()
{
      void print();
      printf("------------");
}
void print()
{
    printf("**************");
}
如果可以当主函数调用printline时输出的是---------和***************还是只是------------?

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

13 个回复

倒序浏览
运行一下试试就好了
回复 使用道具 举报
肯定是不行撒,作用域不同。
回复 使用道具 举报
可以调用,如果你想调用 应该是这样

void print();
void printline()
{
    print();
    printf("------------");
}
void print()
{
    printf("**************");
}
int main()
{
    printline();
   
    return 0;
}


输出结果是 **************------------

点评

其实在printline里面声明也是可以的哦,楼主的代码是对的  发表于 2014-5-29 19:37
回复 使用道具 举报
可以在函数体内声明另一个函数, 这个声明在这个函数体内有效. 在main函数中调用printline时, 因为printline里只是声明了print函数, 并没有调用它, 所以并不会打印 ***, 只打印 ---.
如果在printline函数中, 声明print函数之后还调用了它, 就会打印 ***, 并打印 ---.  

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报 1 0
不需要声明一下吗
回复 使用道具 举报
可以在函数内声明函数,但是不能在函数内定义!
回复 使用道具 举报
可以在自定义函数内部声明其他自定义函数,但前提是被声明的函数要在后面声明在前。输出结果是"------------",因为没有用void printline函数间接调用下面的print函数。只是在void printline()中做了一个声明而已。
回复 使用道具 举报
结果是**************
----------
回复 使用道具 举报
本帖最后由 子城伯涵 于 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("**************");
}

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
liulinjie 发表于 2014-5-26 22:08
可以在函数体内声明另一个函数, 这个声明在这个函数体内有效. 在main函数中调用printline时, 因为printline ...

喔知道了    谢谢

点评

:D 不客气!  发表于 2014-5-30 14:00
回复 使用道具 举报
原来还可以这样啊····
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马