精华内容
下载资源
问答
  • 原标题:干货 | 深度剖析C语言的main函数 main的返回值main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出。返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出。void main()有...

    原标题:干货 | 深度剖析C语言的main函数

    d4d55fdbd453e51741ec6dcc223d9659.png

    main的返回值

    main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出。返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出。

    void main()

    有一些书上的,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。

    C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 “The definition void main( ) { /* … */ } is not and never has been C++, nor has it even been C.” 这可能是因为 在 C 和 C++ 中,不接收任何参数也不返回任何信息的函数原型为“void foo(void);”。

    可能正是因为这个,所以很多人都误认为如果不需要程序返回值时可以把main函数定义成void main(void) 。然而这是错误的!main 函数的返回值应该定义为 int 类型,C 和 C++ 标准中都是这样规定的。

    虽然在一些编译器中,void main() 可以通过编译,但并非所有编译器都支持 void main() ,因为标准中从来没有定义过 void main 。

    g++3.2 中如果 main 函数的返回值不是 int 类型,就根本通不过编译。而 gcc3.2 则会发出警告。所以,为了程序拥有很好的可移植性,一定要用 int main ()。测试如下:

    #include

    void main()

    {

    printf("Hello world\n");

    return;

    }

    运行结果:g++ test.c

    6546b65f1e0a2b933233bdf52ca9f8f0.png

    main()

    那既然main函数只有一种返回值类型,那么是不是可以不写?规定:不明确标明返回值的,默认返回值为int,也就是说 main()等同于int main(),而不是等同于void main()。

    在C99中,标准要求编译器至少给 main() 这种用法来个警告,而在c89中这种写法是被允许的。但为了程序的规范性和可读性,还是应该明确的指出返回值的类型。测试代码:

    #include

    main()

    {

    printf("Hello world\n");

    return 0;

    }

    运行结果:

    477c4415c18e73c13600766fc560dc65.png

    C和C++的标准

    在 C99 标准中,只有以下两种定义方式是正确的:

    int main( void )

    int main( int argc, char *argv[] )

    若不需要从命令行中获取参数,就使用int main(void) ;否则的话,就用int main( int argc, char *argv[] )。当然参数的传递还可以有其他的方式,在下一节中,会单独来讲。

    main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的调用者(如操作系统),等同于 exit(0),来判断函数的执行结果。

    C++89中定义了如下两种 main 函数的定义方式:

    int main( )

    int main( int argc, char *argv[] )

    int main( ) 等同于 C99 中的 int main( void ) ;int main( int argc, char*argv[] ) 的用法也和C99 中定义的一样。同样,main函数的返回值类型也必须是int。

    return 语句

    如果 main 函数的最后没有写 return 语句的话,C99 和c++89都规定编译器要自动在生成的目标文件中加入return 0,表示程序正常退出。

    不过,建议你最好在main函数的最后加上return语句,虽然没有这个必要,但这是一个好的习惯。在linux下我们可以使用shell命令:echo $? 查看函数的返回值。

    #include

    int main()

    {

    printf("Hello world\n");

    }

    运行结果:

    4c5ad0463d5d84ca8e90c814e5ceea1f.png

    同时,需要说明的是return的返回值会进行 类型转换,比如:若return 1.2 ;会将其强制转换为1,即真正的返回值是1,同理,return ‘a’ ;的话,真正的返回值就是97,;但是若return “abc”;便会报警告,因为无法进行隐式类型转换。

    测试main函数返回值的意义

    前文说到,main函数如果返回0,则代表程序正常退出。通常,返回非零代表程序异常退出。在本文的最后,测试一下: test.c:

    #include

    int main()

    {

    printf("c 语言\n");

    return 11.1;

    }

    在终端执行如下:

    ➜ testSigpipe git:(master) ✗ vim test.c

    ➜ testSigpipe git:(master) ✗ gcc test.c

    ➜ testSigpipe git:(master) ✗ ./a.out && echo "hello world"#&&与运算,前面为真,才会执行后边的

    c 语言

    可以看出,操作系统认为main函数执行失败,因为main函数的返回值是11

    ➜ testSigpipe git:(master) ✗ ./a.out

    ➜ testSigpipe git:(master) ✗ echo $?

    11

    若将main函数中返回值该为0的话:

    ➜ testSigpipe git:(master) ✗ vim test.c

    ➜ testSigpipe git:(master) ✗ gcc test.c

    ➜ testSigpipe git:(master) ✗ ./a.out && echo "hello world" #hello

    c 语言

    hello world

    可以看出,正如我们所期望的一样,main函数返回0,代表函数正常退出,执行成功;返回非0,代表函数出先异常,执行失败。

    main函数传参

    首先说明的是,可能有些人认为main函数是不可传入参数的,但是实际上这是错误的。main函数可以从命令行获取参数,从而提高代码的复用性。

    函数原形

    为main函数传参时,可选的main函数原形为:

    int main(int argc , char* argv[],char* envp[]);

    参数说明:

    ①、第一个参数argc表示的是传入参数的个数 。

    ②、第二个参数char* argv[],是字符串数组,用来存放指向的字符串参数的指针数组,每一个元素指向一个参数。各成员含义如下:

    argv[0]:指向程序运行的全路径名。

    argv[1]:指向执行程序名后的第一个字符串 ,表示真正传入的第一个参数。

    argv[2]:指向执行程序名后的第二个字符串 ,表示传入的第二个参数。

    …… argv[n]:指向执行程序名后的第n个字符串 ,表示传入的第n个参数。

    规定:argv[argc]为NULL ,表示参数的结尾。

    ③、第三个参数char* envp[],也是一个字符串数组,主要是保存这用户环境中的变量字符串,以NULL结束。envp[]的每一个元素都包含ENVVAR=value形式的字符串,其中ENVVAR为环境变量,value为其对应的值。

    envp一旦传入,它就只是单纯的字符串数组而已,不会随着程序动态设置发生改变。可以使用putenv函数实时修改环境变量,也能使用getenv实时查看环境变量,但是envp本身不会发生改变;平时使用到的比较少。

    注意:main函数的参数char* argv[]和char* envp[]表示的是字符串数组,书写形式不止char* argv[]这一种,相应的argv[][]和 char** argv均可。

    char* envp[]

    写个小测试程序,测试main函数的第三个参数:

    #include

    int main(int argc ,char* argv[] ,char* envp[])

    {

    int i = 0;

    while(envp[i++])

    {

    printf("%s\n", envp[i]);

    }

    return 0;

    }

    运行结果:部分截图

    ebf8e70abcee051b1d77a6edae31b643.png

    envp[] 获得的信息等同于Linux下env命令的结果。

    常用版本

    在使用main函数的带参版本的时,最常用的就是:**int main(int argc , char* argv[]);**变量名称argc和argv是常规的名称,当然也可以换成其他名称。

    命令行执行的形式为:可执行文件名 参数1 参数2 … … 参数n。可执行文件名称和参数、参数之间均使用空格隔开。

    示例程序

    #include

    int main(int argc, char* argv[])

    {

    int i;

    printf("Total %d arguments\n",argc);

    for(i = 0; i < argc; i++)

    {

    printf("\nArgument argv[%d] = %s \n",i, argv[i]);

    }

    return 0;

    }

    运行结果:

    ➜ cpp_workspace git:(master) ✗ vim testmain.c

    ➜ cpp_workspace git:(master) ✗ gcc testmain.c

    ➜ cpp_workspace git:(master) ✗ ./a.out 1 2 3 #./a.out为程序名 1为第一个参数 , 2 为第二个参数, 3 为第三个参数

    Total 4 arguments

    Argument argv[0] = ./a.out

    Argument argv[1] = 1

    Argument argv[2] = 2

    Argument argv[3] = 3

    Argument argv[4] = (null) #默认argv[argc]为null

    main的执行顺序

    可能有的人会说,这还用说,main函数肯定是程序执行的第一个函数。那么,事实果然如此吗?相信在看了本节之后,会有不一样的认识。

    为什么说main()是程序的入口

    linux系统下程序的入口是”_start”,这个函数是linux系统库(Glibc)的一部分,当我们的程序和Glibc链接在一起形成最终的可执行文件的之后,这个函数就是程序执行初始化的入口函数。通过一个测试程序来说明:

    #include

    int main()

    {

    printf("Hello world\n");

    return 0;

    }

    编译:

    gcc testmain.c -nostdlib # -nostdlib (不链接标准库)

    程序执行会引发错误:/usr/bin/ld: warning: cannot find entry symbol _start; 未找到这个符号

    所以说:

    编译器缺省是找 __start 符号,而不是 main

    __start 这个符号是程序的起始

    main 是被标准库调用的一个符号

    那么,这个_start和main函数有什么关系呢?下面我们来进行进一步探究。

    _start函数的实现该入口是由ld链接器默认的链接脚本指定的,当然用户也可以通过参数进行设定。_start由汇编代码实现。大致用如下伪代码表示:

    void _start()

    {

    %ebp = 0;

    int argc = pop from stack

    char ** argv = top of stack;

    __libc_start_main(main, argc, argv, __libc_csu_init, __linc_csu_fini,

    edx, top of stack);

    }

    对应的汇编代码如下:

    _start:

    xor ebp, ebp //清空ebp

    pop esi //保存argc,esi = argc

    mov esp, ecx //保存argv, ecx = argv

    push esp //参数7保存当前栈顶

    push edx //参数6

    push __libc_csu_fini//参数5

    push __libc_csu_init//参数4

    push ecx //参数3

    push esi //参数2

    push main//参数1

    call _libc_start_main

    hlt

    可以看出,在调用_start之前,装载器就会将用户的参数和环境变量压入栈中。

    main函数运行之前的工作

    从_start的实现可以看出,main函数执行之前还要做一系列的工作。主要就是初始化系统相关资源:

    Some of the stuff that has to happen before main():

    set up initial stack pointer

    initialize static and global data

    zero out uninitialized data

    run global constructors

    Some of this comes with the runtime library's crt0.o file or its __start() function. Some of it you need to do yourself.

    Crt0 is a synonym for the C runtime library.

    1.设置栈指针

    2.初始化static静态和global全局变量,即data段的内容

    3.将未初始化部分的赋初值:数值型short,int,long等为0,bool为FALSE,指针为NULL,等等,即.bss段的内容

    4.运行全局构造器,类似c++中全局构造函数

    5.将main函数的参数,argc,argv等传递给main函数,然后才真正运行main函数

    main之前运行的代码

    下面,我们就来说说在mian函数执行之前到底会运行哪些代码:

    (1)全局对象的构造函数会在main 函数之前执行。

    (2)一些全局变量、对象和静态变量、对象的空间分配和赋初值就是在执行main函数之前,而main函数执行完后,还要去执行一些诸如释放空间、释放资源使用权等操作

    (3)进程启动后,要执行一些初始化代码(如设置环境变量等),然后跳转到main执行。全局对象的构造也在main之前。

    (4)通过关键字attribute,让一个函数在主函数之前运行,进行一些数据初始化、模块加载验证等。

    示例代码

    ①、通过关键字attribute

    #include

    __attribute__((constructor)) void before_main_to_run()

    {

    printf("Hi~,i am called before the main function!\n");

    printf("%s\n",__FUNCTION__);

    }

    __attribute__((destructor)) void after_main_to_run()

    {

    printf("%s\n",__FUNCTION__);

    printf("Hi~,i am called after the main function!\n");

    }

    int main( int argc, char ** argv )

    {

    printf("i am main function, and i can get my name(%s) by this way.\n",__FUNCTION__);

    return 0;

    }

    ②、全局变量的初始化

    #include

    using namespace std;

    inline int startup_1()

    {

    cout<

    return 0;

    }

    int static no_use_variable_startup_1 = startup_1();

    int main(int argc, const char * argv[])

    {

    cout<

    return 0;

    }

    至此,我们就聊完了main函数执行之前的事情,那么,你是否还以为main函数也是程序运行的最后一个函数呢?

    结果当然不是,在main函数运行之后还有其他函数可以执行,main函数执行完毕之后,返回到入口函数,入口函数进行清理工作,包括全局变量析构、堆销毁、关闭I/O等,然后进行系统调用结束进程。

    main函数之后执行的函数

    1、全局对象的析构函数会在main函数之后执行;

    2、用atexit注册的函数也会在main之后执行。

    atexit函数

    原形:

    int atexit(void (*func)(void));

    atexit 函数可以“注册”一个函数,使这个函数将在main函数正常终止时被调用,当程序异常终止时,通过它注册的函数并不会被调用。

    编译器必须至少允许程序员注册32个函数。如果注册成功,atexit 返回0,否则返回非零值,没有办法取消一个函数的注册。

    在 exit 所执行的任何标准清理操作之前,被注册的函数按照与注册顺序相反的顺序被依次调用。每个被调用的函数不接受任何参数,并且返回类型是 void。被注册的函数不应该试图引用任何存储类别为 auto 或 register 的对象(例如通过指针),除非是它自己所定义的。

    多次注册同一个函数将导致这个函数被多次调用。函数调用的最后的操作就是出栈过程。main()同样也是一个函数,在结束时,按出栈的顺序调用使用atexit函数注册的,所以说,函数atexit是注册的函数和函数入栈出栈一样,是先进后出的,先注册的后执行。通过atexit可以注册回调清理函数。可以在这些函数中加入一些清理工作,比如内存释放、关闭打开的文件、关闭socket描述符、释放锁等等。

    #include

    #include

    void fn0( void ), fn1( void ), fn2( void ), fn3( void ), fn4( void );

    int main( void )

    {

    //注意使用atexit注册的函数的执行顺序:先注册的后执行

    atexit( fn0 );

    atexit( fn1 );

    atexit( fn2 );

    atexit( fn3 );

    atexit( fn4 );

    printf( "This is executed first.\n" );

    printf("main will quit now!\n");

    return 0;

    }

    void fn0()

    {

    printf( "first register ,last call\n" );

    }

    void fn1(

    {

    printf( "next.\n" );

    }

    void fn2()

    {

    printf( "executed " );

    }

    void fn3()

    {

    printf( "is " );

    }

    void fn4()

    {

    printf( "This " );

    }

    学习IT相关内容,找“职坐标在线”返回搜狐,查看更多

    责任编辑:

    展开全文
  • C语言的函数

    2013-07-12 16:43:57
    2013/7/11 09:28 C语言函数 C语言中函数由函数名唯一标示。函数名是一个标识符,不能与其他函数同名。但在C++中函数允许重名。 ...函数的返回类型,可以是任何基本数据和...C语言规定,实参对形参的数据传递是单向的
    2013/7/11 09:28

    C语言函数
    C语言中函数由函数名唯一标示。函数名是一个标识符,不能与其他函数同名。但在C++中函数允许重名。
    函数的返回类型,可以是任何基本数据和指针。
    不返回任何值时应定义返回类型为void.gcc默认返回类型是int.

    定义函数时,函数名后面括号内的是变量是形参;调用函数时,函数名后面括号内的是实参。
    C语言规定,实参对形参的数据传递是单向的值传递。实参的值和形参的值分别存放在不同的内存单元内。
    函数体内定义的变量在函数体外是不可见的,主函数也不例外,外部不可访问。
    形参和函数体内部定义的变量都是局部变脸,只有在发生函数调用时,局部变量才会被分配内存单元,调用结束后,其所占的内存单元被系统回收。
    事实上,C语言中一对大括号标示了一个变量的作用域。复合语句中定义的标量只能在该复合语句中使用。

    linux中默认main函数的返回类型为int,main函数通过向操作系统返回一个数来报告执行情况,通常返回0表示程序正常结束。但操作系统一般忽略main函数的返回值。
    如果调用库函数,要将相应的头文件包含在源文件中。.h是头文件的后缀,表示它是一个头文件(header file).

    函数可以嵌套调用,但不可以嵌套定义。
    在调用一个函数的过程中又出现直接或者间接的调用该函数本身,称为函数的递归调用。

    动态变量是指程序运行过程中根据需要动态分配内存空间的变量。静态变量指在程序运行期间分配固定的存储空间的变量。
    动态变量:函数的形参,函数内定义非static变量。
    静态变量:函数内定义的static变量,全局变量。
    静态变量在函数调用结束后并不会销毁。

    规模较大的程序往往由多个源文件组成,如果一个源文件的程序代码要用到另外一个文件的内定义的全局变量,就要使用extern对该全局变量进行声明。

    展开全文
  • c语言-函数

    2020-07-31 16:32:23
    1、内部函数 如果一个函数只能在本文件使用,它称为内部函数。...c语言规定,如果在定义函数时省略extern,则隐含为外部函数。 在需要调用外部函数的文件中,用extern声明所用的函数为外部函数。 ...

    1、内部函数

    如果一个函数只能在本文件使用,它称为内部函数。在定义内部函数时,在函数名和函数类型前加static。

    内部函数又称为静态函数。

    2、外部函数

    如果一个函数可以在多个文件中使用,它称为外部函数。在定义外部函数时,在函数名和函数类型前加extern。

    c语言规定,如果在定义函数时省略extern,则隐含为外部函数。

    在需要调用外部函数的文件中,用extern声明所用的函数为外部函数。

     

    展开全文
  • C语言main函数

    2017-09-19 13:33:16
    C语言规定了main函数只能有两个参数,并且其类型也规定了,习惯上把他们写成: main(int argc , char *argv[]) 第一个参数是整形,第二个参数是指向字符串指针数组,为什么这么定义?有什么用?C语言还规定了...

    c语言中main函数是可以带参数的,平时写倒是没怎么用这个参数,学习了一下这个参数。
    C语言规定了main函数只能有两个参数,并且其类型也规定了,习惯上把他们写成:
    main(int argc , char *argv[])
    第一个参数是整形,第二个参数是指向字符串的指针数组,为什么这么定义?有什么用?

    C语言还规定了程序的执行是从main函数开始的,这和操作系统有关,因为平时我们开发是在操作系统之上进行的,自己写的程序都是由操作系统引导的,如果你自己写引导程序当然就不用main函数开始了。然后回到这个有什么用的问题,既然从它开始,那给它形参有什么用,哪个函数调用它。
    main函数的参数获得只能在执行它时给到,比如linux下运行 example 这个c程序:
    ./example hello hello hello
    这三个hello就是传给main函数的参数,这里就可以知道为什么要定义为一个整形和一个指向字符串的数组。注意是指向字符串的数组,相当于指针数组,可以放置多个字符串,所以我们的参数可以是三个也可以是其他个数,第一个整形参数保存参数个数。

    #include <stdio.h>
    void main(int argc , char *argv[])
    {
    while(argc-- > 1)
        printf("%s", *++argv);
    }

    输出解果是三个hello 。

    注意./example 这个程序的名字也是算一个参数的,所以这里总有四个参数。can shu

    展开全文
  • C语言printf函数的详述

    2018-04-13 21:36:50
    format 参数输出格式,定义格式为:%[flags][width][.perc][F|N|h|l]type规定数据输出方式,具体如下:1.type 含义如下:d 有符号10进制整数i 有符号10进制整数o 无符号8进制整数u 无符号10进制整数x 无符号16...
  • 我们在C语言定义一个函数,通常都是需要在函数原型中规定这个函数需要提供什么类型参数以及需要提供多少个。也就是,你参数必须明确。但是我们调用函数库中printf和scanf函数会发现,它们似乎是可以根据我们...
  • C语言基础:函数的声明与定义

    万次阅读 多人点赞 2018-03-26 11:20:24
     在这一章中我们来学习一下关于函数的定义与使用。关于函数的概念我们可以这样理解,函数是一个功能的集合,它可以根据输入完成特写的功能,并将结果输出。当然有时候函数只是为了实现一些特写功能而并不一定要有...
  • c语言函数指针

    2013-08-28 21:54:54
    定义:指向函数的指针:函数...赋值:ptf=printFuction(ptf=&printFuction)c语言规定:当用函数名(printFution)来初始化函数指针时,函数名会被转换为指向这个函数的指针 #include void printFuction(){ printf("tes
  • C语言——函数指针

    2020-05-20 10:20:25
    由于整型变量只需要定义变量的类型即可完全规定这个变量的格式(个人理解,变量声明限定了变量的格式,变量定义规定了其内容)。但是对于一个函数来说(将函数也看成一种复杂的变量),函数的格式由哪些东西唯一确定...
  • 内部函数和外部函数内部函数: 需加static声明,又称静态函数,只能在该文件中调用,在其他文件中不能被调用外部函数:1. 在定义函数时,若在函数首部...C语言规定定义函数时省略了extern 则隐含为外部函数,可被
  • 文本窗口的定义TurboC2.0的字符屏幕函数主要包括文本窗口大小的设定、窗口颜色的设置、窗口文本的清除和输入输出等函数。  TurboC2.0默认定义的文本窗口为整个屏幕,共有80列(或40列)25行的文本单元,每个单元包括...
  • #pragma mark 函数的声明和定义 ###pragma mark 概念 ###pragma mark 代码 #include <stdio.h> // 以前我们在定义函数的时候,一直都是把函数定义在main...// C语言规定:一般情况下,如果想要调用一个函数,该函...
  • C语言函数的参数传递

    2015-03-17 09:14:50
    C语言函数的参数传递 1.调用函数向被调用函数以形式参数传递 用户编写的函数一般在对其说明和定义时就规定了形式参数类型 ,因此调用这些函数时参量必须与子函数中形式参数的数据类型、顺序和数量完全相同。注意: ...
  • C语言规定函数返回值类型是由 A. return语句中表达式类型所决定 B.调用该函数时主调函数类型所决定 C.调用该函数时系统临时决定 D.在定义该函数时所指定函数类型所决定 3. 下面函数调用
  • C语言的内部函数和外部函数用法

    千次阅读 2010-04-09 16:53:00
    内部函数和外部函数内部函数: 需加static声明,又称静态函数,只能在该文件中调用,在其他文件中不能被调用外部函数:1. 在定义函数时,若在函数首部...C语言规定定义函数时省略了extern 则隐含为外部函数,可被
  • C语言中main函数的参数详解

    千次阅读 2014-09-17 09:33:55
    main函数的定义形式   main函数可以不带参数,也可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。所以C99标准中规定只有以下两种定义...
  • 但是在 C 语言中规定,main 函数是不能被别的函数调用,那究竟是谁传递了参数给main 函数呢? 答案是:命令行 当我们在命令执行程序时,其实就是在给main 函数传递参数。其中 argc 全称是 arg...
  • C语言程序设计理论第7章函数 函数的嵌套调用 嵌套调用 在调用一个函数的过程中又调用另一个函数 C语言规定函数不能嵌套定义但可以嵌套调用 函数是相互平行的 main) { a; } a 函数 { b; return; } b函数 { return; } ...
  • main函数的定义形式 main函数能够不带參数,也能够带參数,这个參数能够觉得是 main函数的形式參数。C语言规定main函数的參数仅仅能有两个,习惯上这两个參数写为argc和argv。所以C99标准中规定仅仅有下面两种定义...
  • c语言产生随机数的函数

    万次阅读 多人点赞 2018-04-15 11:38:01
    1.产生随机数 (1)使用该函数首先应在开头包含头文件stdlib.h(2)在标准C库中函数rand()可以生成0~RAND_MAX之间一个随机数,...(4)标准C并没有规定int整数位数,int位数由编译器定义,例如: TC编译器中in...
  • C语言函数3个点 ...有什么作用

    千次阅读 2020-06-28 20:44:31
    转载于网友的一片文章,写的很好! 标准库提供的一些参数的数目可以有变化的函数。例如我们很熟悉的printf,它需要有...本节介绍这个头文件提供的有关功能,它们的意义和使用,并用例子说明这类函数的定义方法。 ...
  • -普通函数的返回值可以是C语言默认标准数据类型,也可以是我们自己定义的任意类型,如结构体或枚举值等等。 -main函数已被C标准规定,只能返回int型,return 0代表程序正常结束运行,返回非0说明存在程序异常。 ...
  • C语言文件操作相关函数 在实际应用中,我们往往需要对文件进行...通过文件指针就可对它所指文件进行各种操作,C语言规定该文件指针类型为FILE型。 FILE文件指针结构体定义: typedef struct { short level; ..
  • ·C语言规定:一个C程序应该由一个称之为main( )主函数和若干个其他函数组成。 ·从main开始执行,调用其他函数后回到main,然后在main结束程序运行。 ·各个子函数定义时互相独立。 ·函数可以互相调用,...
  • C语言中有关颜色的定义

    千次阅读 2014-05-21 15:14:12
    1.文本窗口的定义  Turbo C2.0默认定义的文本窗口为整个屏幕, 共有80列(或40列)25行的文本  单元, 每个单元包括一个字符和一个属性, 字符即ASCII 码字符, 属性规定该字  符的颜色和强度。  Turbo C2.0可以...
  • C语言中,有三种主要输入函数:scanf(),fgets()以及gets()。他们使用方法及注意事项如下: 1.scanf() 它是一种格式化输入方式,可一次性按照规定的格式输入多个数据域。下面以输入规定的长度字符串为例...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 511
精华内容 204
关键字:

c语言规定函数的定义

c语言 订阅