zoukankan      html  css  js  c++  java
  • C语言复习

    a. 引用外部变量

    如果需要在一个源文件中引用另一个源文件中定义的变量,只需要在引用的文件中将变量加上 extern 关键字的声明即可

    1. addtwonum.c
    #include<stdio.h>
     // 外部变量声明
     extern int x;
     extern int y;
     int addtwonum()
     {
     return x + y;
     }
    
    1. review.c
    #include<stdio.h>
     // 定义两个全局变量
     int x = 1;
     int y = 2;
     int addtwonum();
     int main(void)
     {
     int result;
     result = addtwonum();
     printf("result 为: %d
    ", result);
     return 0;
     }
    
    b. 定义常量
    1. 使用 #define 预处理器
    #define identifier value
    
    1. 使用 const 关键字
    const type variable = value;
    
    c. 杂项运算符
    运算符 描述 实例
    sizeof() 返回变量的大小。 sizeof(a) 将返回 4,其中 a 是整数。
    & 返回变量的地址。 &a; 将给出变量的实际地址。
    * 指向一个变量。 *a; 将指向一个变量。
    ? : 条件表达式 如果条件为真 ? 则值为 X : 否则值为 Y
    int a = 4;
     short b;
     double c;
     int* ptr;
     // sizeof 运算实例
     printf("变量 a 的大小 = %lu
    ", sizeof(a));
     printf("变量 b 的大小 = %lu
    ", sizeof(b));
     // & 和 * 运算符实例
     ptr = &a; // ptr 现在包含 'a' 的地址
     printf("a = %d
    ", a);
     printf("*ptr = %d
    ", *ptr);
     // 三元运算符
     a = 10;
     b = (a == 1) ? 20 : 30;
     printf("b 值 是%d 
    ", b);
    

    d. vs2019 使用 scanf 读取遇到的错误

    C6031错误

    // 解决方法 将 scanf 换成 scanf_s
     int buy;
     scanf_s("%d", &buy);
      printf("buy = %d ", buy);
    

    C4996错误

    [解决方法](https://www.cnblogs.com/xmdykf/p/12317594.html

    e. 全局变量与局部变量在内存中的区别
    • 全局变量保存在内存的全局存储区中,占用静态的存储单元;
    • 局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。
    f. 枚举变量的定义
    1. 先定义枚举类型,再定义枚举变量
    enum DAY{      MON=1, TUE, WED, THU, FRI, SAT, SUN};enum DAY day;
    
    1. 定义枚举类型的同时定义枚举变量
    enum DAY{      MON=1, TUE, WED, THU, FRI, SAT, SUN} day;
    
    1. 省略枚举名称,直接定义枚举变量
    enum{      MON=1, TUE, WED, THU, FRI, SAT, SUN} day;
    
    g. 函数指针

    通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数。

    函数指针可以像一般函数一样,用于调用函数、传递参数。

    // 声明
    typedef int (*fun_ptr)(int,int); // 声明一个指向同样参数、返回值的函数指针类型
    
    #include <stdio.h>
     int max(int x, int y)
     {
     return x > y ? x : y;
     }
     int main(void)
     {
     /* p 是函数指针 */
     int (* p)(int, int) = & max; // &可以省略
     int a, b, c, d;
     printf("请输入三个数字:");
     scanf("%d %d %d", & a, & b, & c);
     /* 与直接调用函数等价,d = max(max(a, b), c) */
     d = p(p(a, b), c);
     printf("最大的数字是: %d
    ", d);
     return 0;
     }
    
  • 相关阅读:
    Hibernate Tools-代码生成
    Java集合(二):List列表
    linux路由
    微软发布SQL Server on Linux
    微软Azure虚拟机备份服务在中国发布
    微软物联网平台再推新!
    微软宣布在Azure上支持更多的开放技术和选择
    2015年微软“十大”开源之举
    “云中论道”之——华山论剑 ,唯快不破:秘笈分享
    牛津计划折射2016年微软开源领域“大步走”
  • 原文地址:https://www.cnblogs.com/xmdykf/p/12320362.html
Copyright © 2011-2022 走看看