C语言_常用数据类型地址的理解

news2024/11/18 8:42:02

常用基本数据类型:

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

int main(){
	
	printf("基本数据类型:\n");
	printf("char: %d\n", sizeof(char));
	printf("int: %d\n", sizeof(int));
	printf("double: %d\n", sizeof(double));
	
}

在这里插入图片描述
size的单位是字节,每个字节占8位

调用这些数据结构实质上就是申请相对应大小的逻辑物理地址,编译器和操作系统会管理这些内存,将虚拟内存地址映射到物理内存地址,因此程序员通常无需担心物理内存地址。

这样的好处就是可以运行多个进程,而无需考虑地址冲突的问题

获取来的空间的作用:

就对数据类型char来说获取的空间为1字节,即8位大小,那么这8位本质上是用来干嘛的?

实质上获取的空间就是用二进制存等值的数据

例如:

char a = 12

本质上就是将(10)12转成二进制再写入a分配的8个字节的空间内

a = 00001100

其中第一位是符号位1代表正数,0代表负数,所以有符号char类型正数的范围就是

00000000 ~ 01111111 //转换成10进制就是(0 ~ 127) 或 (0 ~ 2^7 - 1)

那么负数怎怎么表示?

10000000 => -2^7或-128

那么-127就表示为:

10000001 //也就是 -128 + 1

那么-1就表示为:

11111111 // 也就是-128 + 127

这也就是为什么有符号char类型的负数范围为-1 ~ -128

当然对于无符号的数据类型unsigned char,即默认其为正数,第一位不再用以判别符号

10000000 => 128
10000001 => 128 + 1 => 129
//数据范围0 ~ 255

当然unsigned修饰其他数据类型也是一样的效果

这也就是为什么输入的整数超范围了就会变成负数:

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <math.h>

int main(){

     char a = 128;

     printf("%d", a);//10000000

     return 0;
}

在这里插入图片描述

也可以在程序中溢出成0,但赋值不行:

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <math.h>

int main(){

     char a = 255;

     printf("%d", a + 1);//11111111 + 1

     return 0;
}

在这里插入图片描述


至于为什么可以输出字符,存入字符,这都是因为字符对应ascii码,这个码本质上就是整数,printf通过%c查找对应字符输出罢了

例如:

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <math.h>

int main(){

     int text1 = 97;
     char text2 = 'c';
     char text3 = 99;
     
     printf("text1: %c\n", text1);
     printf("text1: %d\n", text1);
     printf("text2: %c\n", text2);
     printf("text2: %d\n", text2);
     printf("text3: %c\n", text3);
     printf("text3: %d\n", text3);
}

在这里插入图片描述


需要注意的是:

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <math.h>

int main(){

     double a = 1.5;

     printf("%d", a);//11111111

     return 0;
}

在这里插入图片描述
原因是:

在你的代码中,你声明了一个double类型的变量a,并将其初始化为1.5。然后,你使用printf(“%d”, a);来打印它。这实际上是一种未定义行为,因为你试图将double类型的值用%d格式字符串打印为整数,这可能导致不可预测的结果。

在某些情况下,编译器可能会将未定义行为的代码解释为0,但这是不可预测的行为,不应该依赖于这种行为。


stdint.h中的常用数据类型

在头文件中:

#include<stdint.h>

常用的数据类型有:

int8_t:有符号8位整数。
uint8_t:无符号8位整数。
int16_t:有符号16位整数。
uint16_t:无符号16位整数。
int32_t:有符号32位整数。
uint32_t:无符号32位整数。
int64_t:有符号64位整数。
uint64_t:无符号64位整数。

对其中例如uint8_t拆解分析

u指unsigned修饰 int指整形 8指占据8位 _t表示类型也就是type

其他的组成逻辑也是一样


还有值得一提的就是c中的数组与char指针:

char a[100];

申请char类型变量100空间,这个空间没有初始化,如果打印的话会发现内部装着一些垃圾信息,是之前程序留下来的

char * a = "abc";
char b[3];
b[0] = 'a';
b[1] = 'b';
b[2] = 'c';

上述操作是等效的b其实也是个指针

#include <stdio.h>

#include <stdio.h>

 
int main(){
     
    char * a = "abc";
    char b[] = "abc";
    a++;
    char * q = b;
    q++;
    printf("%s\n",a);
    printf("%s\n", q);
    return 0;
}


在这里插入图片描述

本质上一样,只是数组b是个不能更改的变量类似:

const char *b

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.6 基本安全设计准则

思维导图&#xff1a; 1.6 基本安全设计准则笔记 目标&#xff1a;理解和遵循一套广泛认可的安全设计准则&#xff0c;以指导保护机制的开发。 主要准则&#xff1a; 机制的经济性&#xff1a;安全机制应设计得简单、短小&#xff0c;便于测试和验证&#xff0c;减少漏洞和降…

linux系统的环境变量-搞清环境变量到底是什么

环境变量 引例环境变量常见的环境变量echoexportenvunsetset 通过代码获取环境变量使用第三个参数获取使用全局变量enviorn获取环境变量通过系统调用获取环境变量 环境变量具有全局属性main函数前两个参数的作用 引例 在linux系统中&#xff0c;我们使用ls命令&#xff0c;直接…

Python 算法高级篇:深度优先搜索和广度优先搜索的高级应用

Python 算法高级篇&#xff1a;深度优先搜索和广度优先搜索的高级应用 引言 1. 深度优先搜索&#xff08; DFS &#xff09;回顾2. 广度优先搜索&#xff08; BFS &#xff09;回顾3. 拓扑排序4. 连通性检测5. 最短路径问题6. 案例分析&#xff1a;社交网络分析7. 总结 引言 深…

剑指 Offer || 084.全排列||

题目 给定一个可包含重复数字的整数集合 nums &#xff0c;按任意顺序 返回它所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2],[1,2,1],[2,1,1]]示例 2&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1…

【蓝桥杯选拔赛真题07】C++小球自由落体 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析

目录 C/C++小球自由落体 一、题目要求 1、编程实现 2、输入输出 二、算法分析

PostgreSQL在云端:部署、管理和扩展你的数据库

随着云计算技术的迅猛发展&#xff0c;将数据库迁移到云端已经成为许多企业的首选。而在众多数据库管理系统中&#xff0c;PostgreSQL因其稳定性、灵活性和可扩展性而成为了不少企业的首选之一。 部署PostgreSQL在云端 将PostgreSQL部署在云端是一个相对简单的过程。云服务提供…

IMX6ULL——GPIO

本章目的&#xff1a;使用GPIO点亮一个LED灯 1.LED原理 &#xff08;1&#xff09;LED类型&#xff1a;插脚LED&#xff1b;贴片LED。 &#xff08;2&#xff09;LED点亮电路 法一&#xff1a; 法二&#xff1a; 我们本章使用法二&#xff0c;使用IMX6ULL的GPIO引脚输出高低电…

Java架构师软件架构的演化和维护

目录 1 导学2 软件架构演化和定义3 面向对象软件架构演化4 软件架构演化方式的分类5 软件架构演化原则6 软件架构演化评估方法7 大型网站架构演化8 软件架构维护想学习架构师构建流程请跳转:Java架构师系统架构设计 1 导学 2 软件架构演化和定义 软件架构的演化和维护就是对…

2023-2024-1高级语言程序设计第1次月考

7-1-1 计算摄氏温度 给定一个华氏温度F&#xff0c;本题要求编写程序&#xff0c;计算对应的摄氏温度C。计算公式&#xff1a;C5(F−32)/9。题目保证输入与输出均在整型范围内。 输入格式: 输入在一行中给出一个华氏温度。 输出格式: 在一行中按照格式“Celsius C”输出对…

软考系统架构师案例分析知识点整理

系统规划&#xff1a;包括系统项目的提出预可行性分析&#xff1b;系统方案的制定、评价和改进&#xff1b;新旧系统的分析和比较&#xff1b;现有软件、硬件和数据资源的有效利用&#xff1b; 软件架构设计&#xff1a;XML技术&#xff1b;基于架构的软件开发过程&#xff1b;…

【算法通关村第一关】链表经典问题

1.两个链表第一个公共子节点 1.这是一道经典的链表问题&#xff1a;输入两条链表&#xff0c;找出他们的第一个公共节点。 使用集合的方法&#xff1a; public ListNode findFirstCommonNodeBySet(ListNode headA,ListNode headB){Set<ListNode> set new HashSet<&g…

Linux服务器部署带Cplex的Java项目

Linux版Cplex安装 Cplex安装包 Cplex 22.1.0 Linux安装包 安装步骤 找到安装包的路径 [roothecs-327697 ~]# cd /www/cplex [roothecs-327697 cplex]# ls cplex_studio2210.linux_x86_64.bin使用chmod 777赋予安装包读、写、执行权限&#xff0c;使用./执行安装 [roothec…

数字IC前端学习笔记:数字乘法器的优化设计(基4布斯编码华莱士树乘法器)

相关阅读 数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 使用基2布斯乘法器虽然能减少乘数中0的数量&#xff0c;但最终还是无法减少部分积的数量&#xff0c;因此一种更合理的编码方式产生了——基4布斯编码。它可以将部…

LeetCode刷题---简单组(六)

文章目录 &#x1f352;题目一 69. x 的平方根&#x1f352;解法一&#x1f352;解法二&#x1f352;题目二 70. 爬楼梯&#x1f352;解法一 &#x1f352;题目一 69. x 的平方根 &#x1f352;解法一 class Solution(object):def mySqrt(self, x):""":type x:…

皮肤渲染方法总结

一、皮肤次表面光照 HDRP用的延迟管线&#xff0c;镜面和散射分开进行计算 UE有透射开启和关闭的效果 &#xff08;一&#xff09;镜面反射 BRDF和Kelemen方法 &#xff08;二&#xff09;次表面散射与透射 1.散射&#xff1a;BRDF与BRSSDF&#xff08;从反射点附近的点进行…

基于springboot框架的房屋租赁租房系统

功能如图所示 摘要 房屋租赁租房系统是一个基于Spring Boot框架开发的全新房地产管理平台&#xff0c;它旨在简化租房流程&#xff0c;提供房东和租户之间的高效互动&#xff0c;以满足现代社会对房屋租赁的不断增长的需求。该系统充分利用了Spring Boot的强大特性&#xff0c;…

电源控制系统架构(PCSA)之电源管理软件

下图显示了电源管理软件栈的简化表示。该图说明了OS电源管理框架、具有直接从SCP请求操作功能的组件以及它们与SCP固件之间的关系。 一个重要的方面是&#xff0c;所有硬件电源管理操作都是由SCP代表这些请求者执行的。 这种OS电源管理(OSPM)的简化表示可以分为两部分&#xff…

[NSSRound#6 Team]check(Revenge)

文章目录 考点tarfile文件覆盖漏洞&#xff08;CVE-2007-4559&#xff09;PIN码计算 解题过程非预期解预期解 考点 tarfile文件覆盖漏洞&#xff08;CVE-2007-4559&#xff09; Python 中 tarfile 模块中的extract、extractFile和extractall 函数中的目录遍历漏洞 允许 用户协…

点云配准--对称式ICP

对称式ICP 写在前面的话 针对于局部平面不完美的情况&#xff0c;提出了一种对称式ICP目标函数&#xff0c;相较于传统的ICP方法&#xff0c;增大了收敛域&#xff0c;提高了收敛速度。论文理论说明不甚清楚&#xff0c;实验较少&#xff0c;但代码开源。 理论 对称目标函数…

【Simulink】飞轮储能系统的建模与MATLAB仿真(永磁同步电机作为飞轮驱动电机)

目录 ​1 主要内容 2 结果分析 3 程序链接 ​1 主要内容 该仿真为飞轮储能系统的建模&#xff0c;包括电网侧和电机侧两部分模型&#xff0c;仿真采用永磁同步电机作为飞轮驱动电机&#xff0c;通过矢量控制的方式对其发电和电动的工况进行控制&#xff0c;同时&#xff0c…