数据类型

获取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. asp.net core 系列之Response caching 之 Distributed caching(3)

    这篇文章讲解分布式缓存,即 Distributed caching in ASP.NET Core Distributed caching in ASP.NET Core 分布式缓存是可以在多个应用服 ...

  2. Docker容器化部署Python应用

    1. 简介 Docker是目前主流IT公司广泛接受和使用的,用于构建.管理和保护它们应用程序的工具. 容器,例如Docker允许开发人员在单个操作系统上隔离和运行多个应用程序,而不是为服务器上的每个应 ...

  3. React性能优化之PureComponent 和 memo使用分析

    前言 关于react性能优化,在react 16这个版本,官方推出fiber,在框架层面优化了react性能上面的问题.由于这个太过于庞大,我们今天围绕子自组件更新策略,从两个及其微小的方面来谈rea ...

  4. MCtalk对话尚德机构:AI讲师,假套路还是真功夫?

    一间容纳百人的被挤得满满的教室,老师讲.学生听.线下课堂曾是职业教育最普遍的形式.随着移动互联网的普及,大量的学习行为逐渐转化到线上进行,传统教育机构如何抓住这轮技术转型的契机,而不是被它吞噬? 近日 ...

  5. Spark学习之路(三)—— 弹性式数据集RDDs

    弹性式数据集RDDs 一.RDD简介 RDD全称为Resilient Distributed Datasets,是Spark最基本的数据抽象,它是只读的.分区记录的集合,支持并行操作,可以由外部数据集 ...

  6. 获取Class的实例

    //1.调用运行时类本身的.class属性 Class<Person> class1 = Person.class; System.out.println(class1); //2.通过运 ...

  7. RDS数据库磁盘满导致实例锁定

    问题描述: 阿里云RDS空间不足,进行报警.收到报警后.对数据库中不重要的数据备份后执行delete删除操作.执行成功后发现数据删掉了.但是数据库的空间并没有释放.数据占用空间反而越来越大,最后RDS ...

  8. C++ 洛谷 P2704 [NOI2001]炮兵阵地

    P2704 [NOI2001]炮兵阵地 没学状压DP的看一下 此题意思很简单,如下图,就是十字架上的不能有两个点放炮兵. 在做此题前,先做一下玉米田 玉米田题解 分析: 而m即一行的个数小于等于10, ...

  9. Codeforces 755D:PolandBall and Polygon(思维+线段树)

    http://codeforces.com/problemset/problem/755/D 题意:给出一个n正多边形,还有k,一开始从1出发,向第 1 + k 个点连一条边,然后以此类推,直到走完 ...

  10. C++智能指针的几种用法

    auto在c++11中已经弃用. 一.auto_ptr模板 auto_ptr与shared_ptr.unique_ptr都定义了类似指针的对象,可以将new到的地址赋给这一对象,当智能指针过期时,析构 ...