1.为什么指针站4byte?

在32bit系统中,指针占4byte;在64bit中指针占8byte;

解释:1.指针是int类型的,32bit中int是4byte的,所以指针是4byte的;

2.32bit系统的内存寻址空间是2^32;所以用4byte=32bit的空间去映射机器的内存地址。

2.float的精确度是8位,为什么与‘零’比较时 0.00001只是5位?

解释:1.根据需求确定要达到的精度误差就行了。 比如你的误差允许范围为千分之一,那和0.0001比较就好了。

2.x==0.0f也可以直接实现。

3.指针函数:是指带指针的函数,即本质是一个函数。函数都有返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。

如:int *pfun(int, int);

函数指针:因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。

int func(int x); /* 声明一个函数 */

int (*f) (int x); /* 声明一个函数指针 */

f=func; /* 将func函数的首地址赋给指针f */

赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。

注2:

函数括号中的形参可有可无,视情况而定。

函数指针作为参数:int getmax(int i,int j,int k,int (*p)(int ,int)); 使用:ret=getmax(i,j,k,get_big);只需要传入函数名作为函数首地址指针就行了。

返回函数指针的函数:int (*get_funtion(int a))(int  i,int j);

int (*p)(int ,int);

p=get_funtion(100);//

这里的get_funtion(100)仅仅作为函数名,将函数的返回指针的值作为另一个函数的首地址,

max=p(i,j);

4.内存对齐可以用一句话来概括:

“数据项只能存储在地址是数据项大小的整数倍的内存位置上”

例如int类型占用4个字节,地址只能在0,4,8等位置上。

理论上是需要在物理内存上的位置是k的整数倍,但是分析的时候使用默认从1开始计数。

不同编译器中的k:

1、对于microsoft的编译器,每种基本类型的大小即为这个k。大体上char类型为8,int为32,long为32,double为64。

2、对于linux下的gcc编译器,规定大小小于等于2的,k值为其大小,大于等于4的为4。

这里不用管这个,只需要考虑最大的一个类型对其就可以了。由于字符数组中每一个元素都是1byte,因此可以讲字符数组元素拆分出来对其,只要保证最后结果是最大类型的整数倍就行了。

struct xx{

char b;

int a;

int c;

char d;

};

sizeof(XX)=16;

struct xx{

char b;

char d;

int a;

int c;

};

sizeof(XX)=12;

c语言中精度站的字节,C语言学习--一些细节问题相关推荐

  1. c语言中的无符号字节,C语言之有符号数和无符号数

    我们知道,在C语言中存在无符号数和有符号数(一些高级语言如Java里面是没有无符号数的),但是对于计算机而言,其本身并不区别有符号数和无符号数,因为在计算机里面都是0或者1,但是在我们的实际使用中有时 ...

  2. c语言中申请内存并初始化,c语言中结构体的定义、初始化及内存分配

    #include struct person { char *name; int age; }; int main() { //结构体可以定义在函数内,也可以定义到函数外 //相当于全局变量与局部变量 ...

  3. 位域 内存 字节序_C语言中的位域、字节序、比特序、大小端(转)

    1.比特序 / 位序 / bit numbering / 我们知道一个字节有8位,也就是8个比特位.从第0位到第7位共8位.比特序就是用来描述比特位在字节中的存放顺序的.通过阅读网页的内容,关于比特序 ...

  4. C语言中数组所占字节怎么算

    数组在内存中所占字节数可以使用sizeof操作符来计算,该操作符是专门用于检测类型或变量或数组在内存中所占有的空间(字节数):语法"sizeof(x)",其中x是类型名.变量名或数 ...

  5. C语言union合并两个字节,C语言中的联合体union所占内存方式

    当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union).在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构: 2)它的所有成员 ...

  6. c语言中怎么转换类型数据类型,C语言中数据类型转换

    C语言的类型转换,可以分为两种:自动类型转换(隐式类型转换,有编译器帮你去完成)和强制类型转换(你知道自己想要什么,所以才转换). 对于自动类型转换,最常见的就是混合运算以及赋值运算,还有一种就是函数 ...

  7. c语言中主要有哪些数据类型,C语言的数据类型有哪些?

    C语言的数据类型 数据类型包含两方面的内容:数据的表示和对数据加工的操作.数据的全部可能表示构成数据类型的值的集合.数据全部合理的操作构成数据类型的操作集合. 在C语言中,把整型.实型和字符型称为基本 ...

  8. c语言中非法使用void类型_C语言中的数据类型

    为什么需要介绍数据类型 学习语言编程,不用急着写代码,先搞懂基本概念.有了基本概念后,然后再考虑在不同的语言中是如何表达的.不同语言无非就是表达方式不一样而已,万变不离其宗. 每一门语言开始部分中总是 ...

  9. C语言中动态数组的作用,C语言实现动态数组

    前言 在纯C语言编程中,数组的创建必须是固定的大小,因为C语言本身没有提供动态数组这种数据结构,这是一个让习惯了使用高级语言编程的人转做C开发面临的一个很头疼的问题,本篇文章就将介绍如何使用纯C语言编 ...

最新文章

  1. 无法加载mspdb140.dll
  2. Java程序员从阿里、京东、美团面试回来,这些面试题你会吗?
  3. MFC改变static text颜色
  4. 单例模式引发的内存泄漏:_资源泄漏:救援的命令模式
  5. python实验练习-类的多继承
  6. she's gone
  7. 访问不上服务器的任何端口
  8. Bitcoin是什么意思
  9. python3.6 与MYSQL的安装与连接
  10. HIve之DML 聚合分组应用函数 静动态分区表
  11. GOD IS A GIRL 创作背后感人的故事
  12. 【Android 逆向】ApkTool 工具使用 ( ApkTool 简介 | ApkTool 解包和打包 )
  13. python方波绘制_怎么用python 画出任意占空比的一串矩形方波呢?
  14. 台式计算机主要硬件设备有哪些,电脑基本硬件有哪些
  15. php中调整图片大小,php 调整图片尺寸的简单示例
  16. pix2pixhd_基于pix2pixHD的行人图像生成
  17. Go chan基础1
  18. 对接阿里云短信服务(附视频教程)
  19. Can't connect to MySQL server (10060)异常解决方法
  20. 【智能制造】博创智能注塑生产智能化应用之路

热门文章

  1. java操作Excel之POI(4)利用POI实现数据的批量导出
  2. Android--List与ArrayList区别(转)
  3. 1)Linux学习笔记:crontab命令
  4. Dual-polarity supply provides ±12V from one IC
  5. idea解决lombok注解失效问题
  6. [异常解决] How to build a gcc toolchain for nRF51 on linux (very detailed!!!)
  7. @RestControllerAdvice 异常分析
  8. 【报告分享】2021中国短视频和直播电商行业人才发展报告.pdf(附下载链接)...
  9. 【干货】2020顶级数据团队建设全景报告-清华大学.pdf(附下载链接)
  10. 【报告分享】2019全球数字经济新图景.pdf