c/c++
文章平均质量分 83
fresh七天
这个作者很懒,什么都没留下…
展开
-
关于EOF和feof()判断文件读到末尾
判断文件读取是否到了结尾有两种方式,一种是判断fgetc()是否返回EOF(即-1,一个宏定义);另一中是使用feof()函数判断,如果结束返回1,否则返回0;第一种方式局限性很大,因为只有fgetc(),fscanf()遇到结束返回EOF,其他函数fgets()返回char*;另外用while((c = fgetc()) != EOF)也不安全,因为对于二进制非文本文件,这些文件在还没结束的原创 2015-03-25 19:55:51 · 4167 阅读 · 0 评论 -
关于计算机中数据类型存储的对齐问题
许多计算机系统对基本数据类型的合法地址做出了一些限制,要求某种类型对象的地址必须是某个值K(通常是2,、4、8)的倍数,这种对齐限制简化了形成处理器和存储器系统之间接口的硬件设计,并且提高了存取效率,虽然可能浪费了空间。所以了解对齐,可以使我们在不降低效率的情况下以最低的空间存储数据不同的硬件结构对对齐有不同的要求,IA32(Intel Architecture 32)硬件无论数据是都对齐,都原创 2015-03-21 22:39:18 · 1287 阅读 · 0 评论 -
C语言中的二级指针和二维数组问题
关于二级指针和二维数组两者差别很大,不可以直接用二级指针传递二维数组首先来看看二维数组在内存中是如何组织的呢?实际上,不管是一维还是多维数组,都是内存中一块线性连续空间,因此在内存级别上,其实都只是一维。但是不同的定义使得表现形式不一样,从而有多维数组的概念。访问数组元素其实原创 2015-03-14 11:58:20 · 1853 阅读 · 0 评论 -
c/c++中动态申请二维数组的方式
c/c++中申请二维数组的方式测试代码如下:#include /*二级指针**作为形参,可以接受二级指针**p、指针数组*p[]作为实参的参数,从而传递二维数组*/void print(int **p, int row, int col){ int i=0,j=0; for(i=0;i<row;i++) { for(j=0;j<col;j++) { printf原创 2015-03-14 13:32:35 · 850 阅读 · 0 评论 -
C语言基本数据类型及其扩展和可移植性问题
不同的c标准,基本数据类型大同小异,但基本都会包括以下几种:一定含有 char 、short 、int 、long 、float 、double可能含有long int、long long、long double甚至还有复数类型float_Complex、double_Complex、long double_Complex原创 2015-07-06 21:39:26 · 3770 阅读 · 0 评论 -
从IA32到X86-64的扩展所导致的函数传参栈模型的变化
X86-64扩展了IA32的寄存器数目,并且带浮点运算的程序会用到专用的浮点运算协处理器(包括SSE,%xmm寄存器等),这个可以查阅amd64 ABI文档。规定整数类型的参数通过寄存器%rdi %rsi %rdx %rcx %r8 %r9来传递,多余的参数通过栈来传递原创 2016-01-29 14:36:41 · 1173 阅读 · 0 评论 -
软件工程再继续
高级软件工程课程结束了,但对于软件工程的理解却还在继续!孟老师通过对同一个功能的反复重构迭代,带领我们一步步理解什么是软件工程,如何写好代码!从一个简单的判断打印输出命令的hello world级别的程序,最后重构封装迭代为一个可重用的命令行接口程序,工程化的思想从0开始注入整个开发过程,现在回忆起来荡气回肠,体态充盈,老师对教授软件工程把握的恰到好处!七次实验内容学下目录: 实验一: 写一个he原创 2017-06-18 20:01:15 · 659 阅读 · 0 评论