zoukankan      html  css  js  c++  java
  • C语言数据类型及变量整理

    数据类型

    获取int的字节数大小方法

    printf("int bytes:%d",sizeof(int));

    列表整理

     Int 与 long int的区别

    早期的C平台是16位int系统,int用二字节表示,范围是-32768~+32767;long是long int的简写,用4字节表示,范围是-2147483648~+2147483647。显然在早期平台下long能表示的整数范围要比int大得多。而时下的平台流行的是32位int系统,即4字节系统,int与long在这样的系统下已经没有区别了,它们都是4字节带符号整数,表数范围都是-2147483648~+2147483647。

    数据溢出

    当变量大于类型的最大值或者小于类型的最小值时,该变量的值会进行跳转,如最大值加一则是最小值。

    #include<stdio.h>
    void main(){
           char min=-128-1;
           char max=127+1;
           printf("min-1=%d 
    ",min);   //输出: 127 
           printf("max+1=%d 
    ",max);  //输出: -128 
    }

    进制

    int i=99;                 /* 十进制        */
    int i=07;                 /* 八进制        */
    int i=0x04;               /* 十六进制      */
    unsigned int i=60u;       /* 无符号整数    */
    long int i=60l;           /* 长整数       */
    unsigned long int i=60ul; /* 无符号长整数  */

    静态变量与函数

    只用于本文件(当前点C文件)的变量或函数要全部使用static关键字声明

    静态变量

    0、静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响,不可用extern实现夸文件访问

    1、静态变量会自动赋有初值0,而普通变量编译器不会自动赋初值

    2、局部静态变量放置在数据区,所以不会因函数的消失而死亡,但寄生于函数之上。全局静态变量与全局变量类似。

    3、静态变量重复定义时,局部静态变量优先级高,但只作用于局部

    #include<stdio.h>
    static int i;//全局静态变量 
    void fun1(){
        static int i;//局部静态变量 
        printf("%d
    ",i);//0-9(局部) 
        i++;
    }
    void main(){
        int x;
        for(x=0;x<10;x++) fun1();
        printf("---%d
    ",i);//0(全局) 
    }

    静态函数

    0、在函数的返回类型前加上static,就是静态函数

    1、静态函数只能在声明它的文件中可见,其他文件不能引用该函数

    2、不同的文件可以使用相同名字的静态函数,互不影响

    枚举

    enum Ex{
        D0,D1,D2,D3 //0,1,2,3
    }; 
    
    enum Ex{
        D0=100,D1,D2,D3 //100,101,102,103
    }ee; 
    
    enum Ex{
        D0,D1=200,D2,D3 //0,200,201,202
    }ee; 

    printf("%d ",D2);

    结构体

    声明

    方法1:

    struct 结构体名
    {
       成员列表 
    }; 
    struct  结构体名 变量1,变量2;

    方法2

    struct 结构体名
    {
       成员列表 
    
    }变量1,变量2;

    方法3

    struct
    {
       成员列表 
       
    }变量1,变量2;

    方法4

    typedef struct
    {
      成员列表; 
    
    }结构体别名;
    结构体别名 变量1,变量2;

    初始化

    方法1

    struct
    {
       成员列表 
       
    }变量1={成员1值,成员2值,成员3值……};

    方法2

    memset(&结构体变量名,0,sizeof(结构体变量名)); //将所有全部变量清零

    引用(使用)成员:

    结构体变量

    struct  结构体名 变量1,变量2;
    变量1.成员名

    结构体指针变量

    struct  结构体名 *变量1;
    变量1->成员名

    C文件间共享变量

    extern

    extern是计算机语言中的一个关键字,可置于变量或者函数前,以表示变量或者函数的定义在别的文件中。提示编译器遇到此变量或函数时,在其它模块中寻找其定义,另外,extern也可用来进行链接指定。

    可以经extern写在头文件中,变量的定义写在任意一个点C文件(如main.c)中,此后只要包含该头文件夹即可实现变量的共享使用

    举个栗子:

    C1.h,声明函数c1fun()

    #ifndef _C1_H_
    #define _C1_H_
    void c1fun(char *strx);
    #endif

    C1.c,实现函数c1fun()

    #include<stdio.h>
    #include"c1.h"
    char *wu;
    void c1fun(char *strx){
       wu=strx;
    }

    Main.c,调用函数c1fun(),并读取外部变量wu的值

    #include <stdio.h>
    #include "c1.h"
    extern char *wu;
    void main(){
       c1fun("123456");
       printf("===:%s",wu);//输出:123456
    }

    #define

    针对不改变的量,可以在头文件中声明,在其他c文件中包含即可使用

    如c1.h中:

    #define DONG "dongxiaodong"

    Mian.c中:

    #include"c1.h"
    ……
    printf("===:%s",DONG);
    ……

    宏定义的使用

    #define的使用

    宏定义常量

    #define DONG '2'         //字符
    #define DONG "is str"    //字符串 
    #define DONG 12          //数字 
    #define DONG 13.36       //浮点数

    宏定义范围

    #define P 123 
    ……
    #undef P

    typedef的使用

    宏定义之类型重命名

    typedef unsigned char u8;

    宏定义之类型重命名对比

    #include<stdio.h>
    
    #define ch1 char*
    typedef char* ch2;
    
    void main(){
     ch1 a,b;//char *a,b;
     ch2 c,d;//char *c,*d;
     //输出: --8,1,8,8--
     printf("--%d,%d,%d,%d--",sizeof(a),sizeof(b),sizeof(c),sizeof(d));
    }

    带参数的宏定义

    #include<stdio.h>
    
    #define Max(x,y) ((x>y)?x:y) 
    #define Add(x,y) (x+y);
    
    void main(){
      int i=Max(10,2);
      int ii=Add(2,1) //此处无分号 
      printf("max:%d,add:%d",i,ii);//max:10,add:3
    }

    参考:

    https://blog.csdn.net/xlh006/article/details/81540703

    https://blog.csdn.net/kuniqiw/article/details/84495732

  • 相关阅读:
    HDU2054_A == B ?【模拟题】【大数】【水的问题】
    hadoop结构出现后format变态
    jquery的clone办法bug修复
    Django学习笔记(三)—— 型号 model
    华夏的理财30天A和华夏财富宝货币哪个收益比较好?
    网贷平台公司 必看
    网贷平台 平安 陆金所
    网贷平台公司 各平台投资收费比较
    2012年网贷平台全国排名
    新进网贷的小散 感受
  • 原文地址:https://www.cnblogs.com/dongxiaodong/p/11256237.html
Copyright © 2011-2022 走看看