C语言_数据类型[详细分析]

接上一篇:C语言_关键字_标识符简介

本次来分享C语言的数据类型,是博主的一些学习笔记的和心得的总结,话不多说,开始上菜:

此博主在CSDN发布的文章目录:我的CSDN目录,作为博主在CSDN上发布的文章类型导读

目录

  • 1.C语言数据类型
    • 1.1.基本数据类型
    • 1.2.类型修饰符
    • 1.3.类型大小和范围
  • 2.数据类型剖析
  • 3.数据类型的本质
  • 4.数据类型的封装void*

1.C语言数据类型

在这里插入图片描述

1.1.基本数据类型

数据类型 					 描述							占用字节(32位)
short						短整型								2
int            			 	整型                   	       		4
long						长整型								4
float         				浮点类型               	  	   		4
double         			 	双精度浮点类型           		  	8
char          				字符类型                   	  		1
enum						枚举类型

注意:
1、可以用sizeof可以求数据类型大小,
2、sizeof是操作符,不是函数;
3、sizeof测量的实体大小为编译期间就已确定

1.2.类型修饰符

  一些基本数据类型能够被 signed(有符号对应int:表示有负数、0、正数)、unsigned(无符号对于int,只有正数和0)修饰.
  当类型修饰符单独使用的时候, signed默认为:signed int;unsigned默认的类型是 unsigned int。

  下面是一些可能出现的带修饰的数据类型:
  [signed]char
  unsigned char
  [signed]int
  unsigned int
  [signed]short
  unsigned short
  [signed]long
  signed long
  [signed]float
  signed float
  [signed]double
  signed double

  [signed]:为默认,可写可不写

1.3.类型大小和范围

  基本数据类型的大小以及能够表示的数据范围是与编译器和硬件平台有关的,
  如:
  unsigned:无符号声明,其最小值是0。

  char:字符变量,用来声明字符变量,取值范围-128— +127。

  [signed] int:有符号基本整型,有符号一般省略signed。Visual C++用四个字节存储一个整型变量,范围约在-21亿 — +21亿。有八进制整型,以O开头;十六进制整型,以Ox开头。

  unsigned int:无符号基本整型,取值约范围0—42亿。一般省略int。

  short int:短整型,占两个字节,取值范围-32768 — +32767。一般省略int。

  unsigned short int:无符号短整型,取值范围0—65535.

  long int: 长整型,4个字节,取值范围约在-21亿 — +21亿。

  unsingned long int:无符号长整型,取值约范围0—42亿。

  float:单精度实型,有效位数为7位。

  double:双精度实型,有效位为15—16位。

  例子:

#include <stdio.h>
int main()
{
int a = 10;
int b[10] ;
printf("int a:%d \n", sizeof(a));		//4
printf("int a:%d \n", sizeof(int *));	//4
printf("int b:%d \n", sizeof(b));		//40
printf("int b:%d \n", sizeof(b[0]));		//4
printf("int b:%d \n", sizeof(*b));		//4
printf("hello.....\n");
getchar();
return 0;
}

2.数据类型剖析

  “类型”是对数据的抽象
   类型相同的数据有相同的表示形式、存储格式以及相关的操作
   程序中使用的所有数据都必定属于某一种数据类型
  
   C++编译器是可以在栈区分配内存的,用不同的数据类型就能确定内存大小,就可以在栈区分配的内存。

   C++编译器可以用数据类型确定分配多大的内存。

3.数据类型的本质

  数据类型可理解为创建变量的模具(模子);是固定内存大小的别名。
  数据类型的作用:编译器预算对象(变量)分配的内存空间大小
  程序举例,如何求数据类型的大小sizeof(int *)

  数据类型可以起别名,用关键字typedef

4.数据类型的封装void*

  1、void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。

  2、用法1:数据类型的封装
     int InitHardEnv(void **handle);
   典型的如内存操作函数memcpy和memset的函数原型分别为
    void * memcpy(void *dest, const void *src, size_t len);
    void * memset ( void * buffer, int c, size_t num );

  3、用法2: void修饰函数返回值和参数,仅表示无。
     如果函数没有返回值,那么应该将其声明为void型
     如果函数没有参数,应该声明其参数为void

       int function(void)
       {
			return 1;
		}

  4、void指针的意义
      C语言规定只有相同类型的指针才可以相互赋值
      void*指针作为左值用于“接收”任意类型的指针
      void*指针作为右值赋值给其它指针时需要强制类型转换
      int *p1 = NULL;
      char *p2 = (char *)malloc(sizoeof(char)*20);

  5、不存在void类型的变量
      C语言没有定义void究竟是多大内存的别名

  以上就是本次的分享了,希望对大家有所帮助,欢迎关注博主一起学习更多的新知识!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/22778.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

四个PCB工程师最头痛的Allegro问题及解答,你一定要看

Allegro是一款功能强大的PCB设计软件&#xff0c;广泛应用在电子设计行业&#xff0c;在使用Allegro过程中&#xff0c;工程师会遇见到多种复杂的技术问题&#xff0c;本文将针对工程师最头痛的Allegro问题进行回答&#xff0c;希望对小伙伴们有所帮助。 1、如何创建新的Allegr…

线上问题处理案例:出乎意料的数据库连接池 | 京东云技术团队

导读 本文是线上问题处理案例系列之一&#xff0c;旨在通过真实案例向读者介绍发现问题、定位问题、解决问题的方法。本文讲述了从垃圾回收耗时过长的表象&#xff0c;逐步定位到数据库连接池保活问题的全过程&#xff0c;并对其中用到的一些知识点进行了总结。 一、问题描述…

高丰度铈磁体

随着烧结钕铁硼应用领域的不断拓展和产量的快速增长&#xff0c;相应的稀土资源也被大量开采。稀土矿中各种稀土元素是共生的&#xff0c;但在钕铁硼的制备过程中&#xff0c;利用的主要是在轻稀土中质量分数为25%的镨Pr和钕Nd元素&#xff0c;这样对轻稀土中占比为质量分数49%…

AIGC周报|让AI来画《海贼王》;苹果限制员工使用ChatGPT;李彦宏:不担心大模型会让工作消失

AIGC&#xff08;AI Generated Content&#xff09;即人工智能生成内容。近期爆火的 AI 聊天机器人 ChatGPT&#xff0c;以及 DallE 2、Stable Diffusion 等文生图模型&#xff0c;都属于 AIGC 的典型案例&#xff0c;它们通过借鉴现有的、人类创造的内容来快速完成内容创作。 …

MySQL备份

MySQL的备份方式有哪几种&#xff1f;分别如何实现&#xff1f; 目录 一、数据的备份类型 1、数据的备份类型根据其自身的特性主要分为以下几组&#xff1a; 二、MySQL备份数据的方式 三、常见的备份工具 1、一般情况下, 我们需要备份的数据分为以下几种 2、备份工具 3…

SpringBoot—常用注解

目录 一、注解(annotations)列表 二、注解(annotations)详解 三、JPA注解 四、springMVC相关注解 五、全局异常处理 一、注解(annotations)列表 SpringBootApplication&#xff1a; 包含了ComponentScan、Configuration和EnableAutoConfiguration注解。其中ComponentScan…

【大学物理实验】基本测量

50分度的游标卡尺&#xff0c;最小分度为&#xff1a; A. 0.1mm B. 0.2mm C. 0.5mm D. 0.02mm 正确答案&#xff1a; D 保存游标卡尺和螺旋测微器是&#xff0c;下面说法正确的是&#xff1a; A. 游标卡尺测量位置应闭合&#xff0c;螺旋测微器小砧和螺杆间隙也应闭合 B. 游标…

Matlab论文插图绘制模板第94期—带置信区间的折线散点图

在之前的文章中&#xff0c;分享了很多Matlab带置信区间的折线图的绘制模板&#xff1a; 进一步&#xff0c;再来分享一下带置信区间的折线散点图的绘制模板。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;加群的朋友…

SSD202 Linux开发日志记录

一、挂载U盘 SDK默认自动加载USB存储模块&#xff0c;但没有自动挂载&#xff0c;插上U盘后识别sda mount /dev/sda /mnt/即可在/mnt查看U盘文件 二、make & make menuconfig提示失败 打开新终端后输入 declare -x ARCH"arm" declare -x CROSS_COMPILE"…

机器学习中四类进化算法的详解(遗传算法、差分进化算法、协同进化算法、分布估计算法)

1、遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09; GA算法原理 首先我们来介绍进化算法的先驱遗传算法&#xff0c;遗传算法&#xff08;Genetic Algorithm&#xff0c;简称GA&#xff09;是一种最基本的进化算法&#xff0c;它是模拟达尔文生物进化理论的…

企业级WordPress开发 – 创建企业级网站的优秀提示

目录 “企业级”是什么意思&#xff1f; 使用WordPress创建企业级网站有什么好处&#xff1f; 使用 WordPress 进行企业开发的主要好处 WordPress 可扩展、灵活且价格合理 WordPress 提供响应式 Web 开发 WordPress 提供了巨大的可扩展性 不断更新使 WordPress 万无一…

Nodejs模块化

介绍 将一个复杂的程序文件按照一定规则拆分成多个文件。 拆分出的每个文件就是一个模块&#xff0c;模块的内容数据是私有的&#xff0c;不过模块可以暴露内部数据使得其他模块使用。 模块化好处&#xff1a;防止命名冲突、高复用性、高维护性。 模块化的使用 初体验 两…

云计算基础——云计算与移动互联网、物联网

8.1 云计算与移动互联网 8.1.1 移动互联网的发展概况 移动互联网的发展概况 移动互联网是指以宽带IP为技术核心&#xff0c;可同时提供语音、数据、多媒体等业务服务的开什么是移动互联网?放式基础电信网络&#xff0c;从用户行为角度来看&#xff0c;移动互联网广义上是指用…

Linux下的用户分类与su/sudo 命令,Linux下的文件类型/用户文件权限身份/文件权限属性/权限与文件权限/ls-l文件属性详解

Tips 下载就是把我们的文件拷贝到系统的某个特定路径之下&#xff0c;普通用户是不允许你往系统里面去拷的。 Linux下的用户分类 root用户&#xff0c;管理员级别的用户身份&#xff0c;他的话基本上不受权限的约束。普通用户&#xff0c;普通用户的添加与每个普通用户密码的…

8.防火墙-SNAT和DNAT

文章目录 SNAT-内网客户访问外网服务原理操作实验 DNAT-外网客户访问内网服务原理操作实验 tcpdump SNAT-内网客户访问外网服务 原理 由内网到外网&#xff1a;从内网发到外网的数据包的源IP由私网IP转换成公网IP 由外网到内网&#xff1a;从外网发到内网的数据包的目的IP由公…

学系统集成项目管理工程师(中项)系列24a_信息系统集成专业技术知识(上)

1. 信息系统的生命周期 1.1. 【19下选10】 1.2. 立项 1.2.1. 形成《需求规格说明书》并确定立项 1.2.1.1. 【21上选11】 1.3. 开发 1.3.1. 【22下选10】 1.3.2. 以立项阶段所做的需求分析为基础&#xff0c;进行总体规划。之后&#xff0c;通过系统分析、系统设计、系统…

若依框架在未登录的情况下访问swagger3.0页面,出现弹窗的解决方法

若依框架在未登录的情况下访问swagger3.0页面&#xff0c;出现弹窗的解决方法 效果展示&#xff1a; 解决方法&#xff1a;在ShiorConfig.java类中找到shiroFilterFactoryBean方法&#xff0c;然后在filterChainDefinitionMap里面put你要过滤的地址&#xff0c;如下&#xff…

【机器学习】集成学习(理论)

集成学习&#xff08;理论&#xff09; 目录 一、何为集成学习二、集成学习最简单的模型&#xff1a;投票策略三、弱学习器的组合算法&#xff1a;自助聚合&#xff08;Bagging模型&#xff09;1、数据划分方法&#xff1a;自助法&#xff08;Bootstrap Method&#xff09;2、B…

浅谈人工智能

人工智能的概念和现状 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是指通过计算机程序和算法来模拟人类智能&#xff0c;包括学习、推理、感知、语言理解、图像识别等方面。自20世纪50年代以来&#xff0c;人工智能领域的研究取得了巨大的进展…

C语言递归算法实现经典例题

一.递归 1.什么是递归 递归是一种编程技术&#xff0c;它通过在函数内部反复调用自身来解决问题。当一个程序调用自己时&#xff0c;这就称为递归调用。递归可以有助于简化某些算法的实现和理解。在递归过程中&#xff0c;每个调用都会将一些数据保存在栈上&#xff0c;直到递…