C语言学习笔记
aploughman
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
静态分配和动态分配内存的区别
说白了,内存的静态分配和动态分配的区别主要是两个: 一是时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。 二是空间不同。堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由函数malloc进行分配。不过栈的动态分配和堆不同,他的动态分配是由编译器进转载 2016-12-05 22:31:12 · 2938 阅读 · 0 评论 -
C语言内存分配--malloc、calloc、realloc
(1)C语言跟内存分配方式 从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量. 在栈上创建 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限. 从堆上分配,亦称动态转载 2016-11-23 19:30:06 · 328 阅读 · 0 评论 -
内存对齐
内存地址对齐,是一种在计算机内存中排列数据(表现为变量的地址)、访问数据(表现为CPU读取数据)的一种方式,包含了两种相互独立又相互关联的部分:基本数据对齐和结构体数据对齐 。 为什么需要内存对齐?对齐有什么好处?是我们程序员来手动做内存对齐呢?还是编译器在进行自动优化的时候完成这项工作? 在现代计算机体系中,每次读写内存中数据,都是按字(word,4个字节转载 2016-11-27 21:25:43 · 254 阅读 · 0 评论 -
源码、补码int型的-32768~32767
本文谈论的都为有符号数。 这得从二进制的原码说起: 二进制原码最大为0111111111111111=215-1=32767 二进制原码最小为1111111111111111=-(215-1)=-32767 正0和负0:0000000000000000=1000000000000000=0 所以,二进制原码表示时,范围是-32767~-0和0~32767,因为有两个零的存转载 2016-12-20 17:09:50 · 3003 阅读 · 0 评论 -
getopt函数
getopt函数 getopt -- 解析命令的可选项 【说明】getopt只是一个简单的解析命令可选项的函数,只能进行简单的格式命令解析,格式如下: 1、形如:cmd [-a][-b] //对短选项的解析; 2、形如:cmd [-a a_argument][-b b_argument] //对短选项及短选项的参数解析; 3、形如:cmd [-a[a_ar转载 2017-01-10 16:40:55 · 334 阅读 · 0 评论 -
getopt函数详解
最近在弄Linux C编程,本科的时候没好好学啊,希望学弟学妹们引以为鉴。 好了,虽然啰嗦了点,但确实是忠告。步入正题: 我们的主角----getopt()函数。 英雄不问出处,getopt()函数的出处就是unistd.h头文件(哈哈),写代码的时候千万不要忘记把他老人家include上。 再来看一下这家伙的原型(不是六耳猕猴): int getopt(i转载 2017-01-10 17:15:39 · 390 阅读 · 1 评论 -
信号掩码--
一. Linux内部用一个128个字节(多个unsigned long)的结构(sigset_t)表示信号的掩码,在i386平台上就是128/4=32个long,每位对应一个信号的掩码,最大支持128*8 = 1024个信号。现在只有64个信号,所以只要考虑最前面的两个long就可以了。 sigset_t mask; unsigned long *pl = (unsigned long*)转载 2017-01-10 22:05:59 · 552 阅读 · 0 评论 -
计算机中的有符号型和无符号型
解有符号数和无符号数负数在计算机中如何表示呢? 这一点,你可能听过两种不同的回答。 一种是教科书,它会告诉你:计算机用“补码”表示负数。可是有关“补码”的概念一说就得一节课,这一些我们需要在第6章中用一章的篇幅讲2进制的一切。再者,用“补码”表示负数,其实一种公式,公式的作用在于告诉你,想得问题的答案,应该如何计算。却并没有告诉你为什么用这个公式就可以和答案? 另一种是一些转载 2017-01-18 16:10:05 · 1715 阅读 · 0 评论
分享