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=--;
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语言数据类型及变量整理的更多相关文章
- 02-Go语言数据类型与变量
Go基本类型 布尔型: bool - 长度: 1字节 - 取值范围: true,false - 注意事项: 不可以用数字代表true或false 整型: int/uint - 根据运行平台可能为32或 ...
- 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型
[源码下载] 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 常量 变量 基本 ...
- iOS开发环境C语言基础 变量 、 数据类型和变量赋值 、 其他 、 运算符
1 变量使用常用错误汇总 1.1 问题 在我们使用变量的过程中,会遇到一些问题,在此将这些问题进行汇总,在今后使用的过程中,不出错.即使出现错误也可以很快地找到问题所在. 1.2 方案 变量在使用的过 ...
- python语言学习7——数据类型和变量
整数 python可以处理任意大小的整数,包括负整数,在程序中的表示方法和数学上的写法一样 计算机由于使用二进制,有时候采用十六进制表示整数比较方便,十六进制数用0x前缀 浮点数 简单的小数就直接用小 ...
- Go语言入门(二)Go语言中的变量、常量、数据类型、流程控制以及函数
Go语言中的变量 通常用var关键声明变量,有常规方式和简化方式. 常规方式: var name1 type1 name1 = value1 //赋值 简化方式: var name2 = value1 ...
- C语言中数据类型和变量
C语言中的数据类型 数据类型的本质,固定大小内存块的别名. 数组名代表数组首元素的地址. 数组首元素的地址,&代表整个数组的地址. 数组数据类型,怎么定义数据数组类型,定义数组类型指针,数组类 ...
- 【R语言入门】R语言中的变量与基本数据类型
说明 在前一篇中,我们介绍了 R 语言和 R Studio 的安装,并简单的介绍了一个示例,接下来让我们由浅入深的学习 R 语言的相关知识. 本篇将主要介绍 R 语言的基本操作.变量和几种基本数据类型 ...
- C语言 遍历流程 变量生命周期
来自c程序设计 谭浩强 程序编译流程 运行c程序的步骤 在编好一个c程序后.怎样上机进行编译运行呢?一般要经过一下几个步骤: 上机输入和编辑源程序.通过键盘和计算机输入程序,如果发现有错误,要及时改正 ...
- Python之路----------基础 一(数据类型、变量、基本语法、流程控制)
一. 数据类型与变量 1.数据类型 整数 #Python在程序中的表示方法和数学上的写法一模一样,-1,0,1都是整数. 浮点数 1 #浮点数就是小数. 字符串 1 #在Python中字符串是以 ...
随机推荐
- js&jq遇到的问题(不断更新中)
1.普通事件和事件绑定: 代码: 普通事件: var btn=document.getElementById('btn'); btn.onclick=function(){ alert("c ...
- play框架之模板
现在网站发展日新月异,网页上显示的东西越来越复杂,看看HTML源码就知道,这东西不是正常人能拼出来的.因此模板应运而生,自我感觉,好的模板应该支持一下功能: 1.支持HTML代码段的复用,即在HTML ...
- Java NIO 学习笔记(三)----Selector
目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...
- mysql-8.0-winx64安装以及修改密码
一.下载安装包(https://dev.mysql.com/downloads/mysql/) 二.添加my.ini配置文件 打开刚刚解压的文件夹 C:\mysql-8.0.16-winx64,在该文 ...
- 【Flink】深入理解Flink-On-Yarn模式
1. 前言 Flink提供了两种在yarn上运行的模式,分别为Session-Cluster和Per-Job-Cluster模式,本文分析两种模式及启动流程. 下图展示了Flink-On-Yarn模式 ...
- 使用docker启动mysql
安装docker 查询mysql版本, docker search mysql 拉取指定版本的镜像 docker pull NAME 启动镜像, 第一次启动最少需要指定MYSQL_ROOT_PASSW ...
- 搭建CentOS 7本地源仓库
CentOS 7离线包及其依赖 推荐使用yumdownloader --resolve --destdir=path python-pip,--resolve下载所有依赖,--destdir指定软件包 ...
- c++二分查找
c++二分查找 题目是在一些数字里找出一个数字,并输出他在第几行 代码 + 注释 #include <stdio.h> #include<iostream> using nam ...
- c++ 求int数组的长度
c++ 求int数组的长度 网上有一些方法是 sizeof(arr) / sizeof(arr[0]); 这种方法放在函数中,是不对的 我自己的方法是 #include <bits/stdc++ ...
- nodejs进阶(1)——npm使用技巧和最佳实践
nodejs进阶教程,小白绕道!!! npm使用技巧和最佳实践 前提:请确保安装了node.js npm的最佳实践 npm install是最常见的npm cli命令,但是它还有更多能力!接下来你会了 ...