数据类型

获取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=--;
char max=+;
printf("min-1=%d \r\n",min); //输出: 127
printf("max+1=%d \r\n",max); //输出: -128
}

进制

int i=;                 /* 十进制        */
int i=; /* 八进制 */
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\r\n",i);//0-9(局部)
i++;
}
void main(){
int x;
for(x=;x<;x++) fun1();
printf("---%d\r\n",i);//0(全局)
}

静态函数

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

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

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

枚举

enum Ex{
D0,D1,D2,D3 //0,1,2,3
}; enum Ex{
D0=,D1,D2,D3 //100,101,102,103
}ee; enum Ex{
D0,D1=,D2,D3 //0,200,201,202
}ee; printf("%d\r\n",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(&结构体变量名,,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(,);
int ii=Add(,) //此处无分号
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

C语言数据类型及变量整理的更多相关文章

  1. 02-Go语言数据类型与变量

    Go基本类型 布尔型: bool - 长度: 1字节 - 取值范围: true,false - 注意事项: 不可以用数字代表true或false 整型: int/uint - 根据运行平台可能为32或 ...

  2. 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型

    [源码下载] 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 常量 变量 基本 ...

  3. iOS开发环境C语言基础 变量 、 数据类型和变量赋值 、 其他 、 运算符

    1 变量使用常用错误汇总 1.1 问题 在我们使用变量的过程中,会遇到一些问题,在此将这些问题进行汇总,在今后使用的过程中,不出错.即使出现错误也可以很快地找到问题所在. 1.2 方案 变量在使用的过 ...

  4. python语言学习7——数据类型和变量

    整数 python可以处理任意大小的整数,包括负整数,在程序中的表示方法和数学上的写法一样 计算机由于使用二进制,有时候采用十六进制表示整数比较方便,十六进制数用0x前缀 浮点数 简单的小数就直接用小 ...

  5. Go语言入门(二)Go语言中的变量、常量、数据类型、流程控制以及函数

    Go语言中的变量 通常用var关键声明变量,有常规方式和简化方式. 常规方式: var name1 type1 name1 = value1 //赋值 简化方式: var name2 = value1 ...

  6. C语言中数据类型和变量

    C语言中的数据类型 数据类型的本质,固定大小内存块的别名. 数组名代表数组首元素的地址. 数组首元素的地址,&代表整个数组的地址. 数组数据类型,怎么定义数据数组类型,定义数组类型指针,数组类 ...

  7. 【R语言入门】R语言中的变量与基本数据类型

    说明 在前一篇中,我们介绍了 R 语言和 R Studio 的安装,并简单的介绍了一个示例,接下来让我们由浅入深的学习 R 语言的相关知识. 本篇将主要介绍 R 语言的基本操作.变量和几种基本数据类型 ...

  8. C语言 遍历流程 变量生命周期

    来自c程序设计 谭浩强 程序编译流程 运行c程序的步骤 在编好一个c程序后.怎样上机进行编译运行呢?一般要经过一下几个步骤: 上机输入和编辑源程序.通过键盘和计算机输入程序,如果发现有错误,要及时改正 ...

  9. Python之路----------基础 一(数据类型、变量、基本语法、流程控制)

    一. 数据类型与变量 1.数据类型 整数   #Python在程序中的表示方法和数学上的写法一模一样,-1,0,1都是整数. 浮点数  1 #浮点数就是小数. 字符串 1 #在Python中字符串是以 ...

随机推荐

  1. orm多表操作

    一.创建表 1.一对多 必须在"多"的表中创建关联字段,在外加约束 class Book(models.Model): id=models.AotuField(primary_ke ...

  2. 第四章 自定义sol合约转化java代码,并实现调用

     鉴于笔者以前各大博客教程都有很多人提问,早期建立一个技术交流群,里面技术体系可能比较杂,想了解相关区块链开发,技术提问,请加QQ群:538327407 准备工作 1.官方参考说明文档 https:/ ...

  3. Java基础(五) final关键字浅析

    前面在讲解String时提到了final关键字,本文将对final关键字进行解析. static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提 ...

  4. CentOS 7 时间同步方法

    centos 7 时间同步使用的是chrony工具 1.检测chrony包是否安装 [root@martin ~]# rpm -qa|grep chrony 2.安装chrony [root@mart ...

  5. l论文查重平台

    推荐大家一个靠谱的论文检测平台.重复的部分有详细出处以及具体修改意见,能直接在文章上做修改,全部改完一键下载就搞定了.怕麻烦的话,还能用它自带的降重功能.哦对了,他们现在正在做毕业季活动, 赠送很多免 ...

  6. 搭建Elk集群搭建 ES-filebeat-logstrash-kibana

    一 .基础环境 软件 版本 作用 Linux/Win Server2012 CentOs/Win Server2012 服务器环境 JDK 1.8.0_151 运行环境依赖 Elasticsearch ...

  7. (数据科学学习手札62)详解seaborn中的kdeplot、rugplot、distplot与jointplot

    一.简介 seaborn是Python中基于matplotlib的具有更多可视化功能和更优美绘图风格的绘图模块,当我们想要探索单个或一对数据分布上的特征时,可以使用到seaborn中内置的若干函数对数 ...

  8. 2019攻防世界web新手区

    robots 看了题目描述,发现与robots协议有关,过完去百度robots协议.发现了robots.txt,然后去构造url访问这个文件 http://111.198.29.45:42287/ro ...

  9. 源码阅读 - java.util.concurrent (二)CAS

    背景 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁.释放锁会导致比较多的上下文切换和调度延时,引起性能问题. ...

  10. 就是要让你彻底学会 @Bean 注解

    @Bean 注解全解析 随着SpringBoot的流行,基于注解式开发的热潮逐渐覆盖了基于XML纯配置的开发,而作为Spring中最核心的bean当然也能够使用注解的方式进行表示.所以本篇就来详细的讨 ...