zoukankan      html  css  js  c++  java
  • c语言学习总结(2)

    目录

    1、math.h头文件编译

    2、main函数分析(待补充)

    3、局部变量,函数中定义的变量

    ///////////////////////////////////////////////////////////////////////////////////////////////

    1、math.h头文件编译

    math.h在用gcc编译时如下:

    gcc main.c -lm

    需要在后面加-lm,因为数学函数位于libm.so库文件中(通常在/lib目录下),-lm 选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找。而大部分库函数(例如printf )位于libc.so库文件中,以后称为libc,使用libc中的库函数在编译时不需要加-lc 选项,当然加了也不算错,因为这个选项是gcc 默认的。

    ///////////////////////////////////////////////////////////////////////////////////////////////

    2、main函数分析

    main函数的特殊之处在于,他在执行的时候自动被系统调用,系统已经认准了main这个名字。main函数return 0表示返回值是0,该返回值是返回给操作系统看的,如果执行成功就返回0,如果不成功则返回非0值。

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++

    main函数的标准定义形式是:

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

    ///////////////////////////////////////////////////////////////////////////////////////////////

    3、局部变量,函数中定义的变量

    一个函数中定义的变量称为局部变量,该变量不能被被另一个函数使用。如:

      int hour=10, minute=10;

    void print_time(int hour, int minute)
    {
            printf("%d:%d ", hour, minute);
    }
    int main(void)
    {
            int hour = 23, minute = 59;

        print_time();
            print_time(hour, minute);
            return 0;

    }

    第一个print_time()打印出来时10,10;第二个print_time打印出来的是23,59

    这两个函数中的hour和minute,虽然名字相同,但是存储的空间地址是不一样的,只不过存储的值相等而已。局部变量每次函数调用的时候都会分配存储空间,每次函数返回时释放存储空间,全局变量在整个程序开始之前就分配存储空间,在程序结束时释放存储空间,所有的函数都可以通过全局变量名来访问他们。

    ///////////////////////////////////////////////////////////////////////////////////////////////

    4、C语言中的全局变量必须使用常量表达式,比如下面两个的定义是不合法的:

      ①double pi = acos(-1.0);

      ②int minute = 360;
         int hour = minute / 60;

    ///////////////////////////////////////////////////////////////////////////////////////////////

    5、全局变量在声明时如果没有赋值,则初始值是0 ,也就是说,整型的就是0 ,字符型的就是'' ,浮点型的就是0.0。如果局部变量在定义时不初始化,则初始值是不确定的,所以,局部变量在使用前一定要先赋值,不管是通过初始化还是赋值运算符,如果读取一个不确定的值来使用肯定会引入Bug。

    ///////////////////////////////////////////////////////////////////////////////////////////////

    ///////////////////////////////////////////////////////////////////////////////////////////////

    ///////////////////////////////////////////////////////////////////////////////////////////////

  • 相关阅读:
    Redis源码分析(二十一)--- anet网络通信的封装
    leetcode 总结part1
    leetcode String to Integer (atoi)
    leetcode 165. Compare Version Numbers
    leetcode 189. Rotate Array
    leetcode 168. Excel Sheet Column Title
    leetcode 155. Min Stack
    leetcode 228. Summary Ranges
    leetcode 204. Count Primes
    leetcode 6. ZigZag Conversion
  • 原文地址:https://www.cnblogs.com/hxu7373/p/3450000.html
Copyright © 2011-2022 走看看