C语言编程积累2
版权声明:本文为CSDN博主(天才2012)原创文章,未经博主同意不得转载。
https://blog.csdn.net/gzzaigcn/article/details/27113957
寥寥数笔,记录我的C语言盲点笔记,仅仅为曾经经历过,亦有误,可交流。
是一个编译器自己主动算大小的函数,在预处理时。和宏定义有所相似。
编译时,编译器判断出sizeof參数的类型,sizeof依据这个类型确定一个整数,所以它能够当常量使用
函数肯定不能当常量使用,函数仅仅能执行时求值
段错误往往是有对内存的不正当操作引起。使的程序在执行是侵占内存,系统检測到后强制终止程序执行,以防止系统死机。
或许你能再次訪问到这块内存,可是终于的结果肯定是内存已经回收清空,系统这样做的优点就是看不是堆内存链表中的区域。自行回收,使系统更高效。
#define _H_FINGER_API_H_
#ifdef __cplusplus
extern "C" {
#endif
extern "C" }
#endif
不要对NULL地址取值。
C99的标准
可是要记得不能在函数内部把一个暂时缓存区的地址覆给一个传入的指针变量。
由于结束后这部发内容被清空,无意义(除非用malloc申请的内容)
c文件文件里声明extern int a。这样这个全局变量编译时就不会报错
一般假设变量定义了就会分配内存的。出现多个申明,默认找已经定义的那个作为全局数值。
,由于.h中赋值后,多个文件一旦使用,就相当与反复了两次变量的初始化赋值。这个不同意。
1. 文本方式仅仅能读取不包含控制字符(换行除外)的文件 (<32)
2. 文本方式会对换行执行翻译。比方windows下,把文件里的/r/n翻译为/n,把写入文件的/n翻译为/r/n;unix下,把文件里的/n翻译为/n,把写入文件的/n翻译为/n。
unsigned char ID[ID_LEN];
unsigned char Finger[FMD_LEN];
unsigned int finsih_flag;// 1:one usr info get finsihed
}USR_INFO;
(1) malloc 分配指定字节数的存储区。此存储区中的初始值不确定
(2) calloc 为指定长度的对象,分配能容纳其指定个数的存储空间。
该空间中的每一位(bit)都初始化为0
(3) realloc 更改曾经分配区的长度(添加或降低)。当添加长度时,可能需将曾经分配区的内容移到还有一个足够大的区域,而新增区域内的初始值则不确定
比方char(-127)扩展成int(-127)
也就是由 10000001 扩展成 11111111 11111111 11111111 10000001
然后你使用%u,也就是将 11111111 11111111 11111111 10000001 当成 unsigned int 来看。那它当然就是 4294967169 了
“最后一个样例,把short型转换成int型。相应表中的“signed integer to signed integer”。转换之后应该值不变。那怎么维持值不变呢?是不是在高位补16个0即可了呢?假设原值是-1,十六进制表示就是ffff,要转成int 型的-1须要变成ffffffff,因此须要在高位补16个1而不是16个0。换句话说。要维持值不变,在高位补1还是补0取决于原来的符号位,这称为符号扩展(Sign Extension)。
”
这是signed integer to signed integer, 为何signed char转为unsigned int时 。也运用了符号扩展??
指针均可看为变量类型的一种。全部指针变量的sizeof 操作结果均为4。
注意:int *p; sizeof(p)=4;
但sizeof(*p)相当于sizeof(int);
对于静态数组。sizeof可直接计算数组大小。
例:int a[10];char b[]="hello";
sizeof(a)等于4*10=40;
sizeof(b)等于6;
注意:数组做型參时。数组名称当作指针使用!
!
void fun(char p[])
{sizeof(p)等于4}
位域是指信息在存储时,并不须要占用一个完整的字节, 而仅仅需占几个或一个二进制位。为了节省存储空间,并使处理简便。C语言提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域。并说明每一个区域的位数。每一个域有一个域名,同意在程序中按域名进行操作。 这样就能够把几个不同的对象用一个字节的二进制位域来表示
typedef union{
struct
{
unsigned int bit0:1;
unsigned int bit1:1;
unsigned int bit2:1;
unsigned int bit3:1;
unsigned int bit4:1;
unsigned int bit5:1;
unsigned int bit6:1;
unsigned int bit7:1;
} bit_field;
} PORT;
28 fstat获取文件的大小等基础信息。ftruncate改变文件大小
ftruncate(fd,length),改为length的长度
C语言编程积累2的更多相关文章
- Linux基础与Linux下C语言编程基础
Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...
- Linux C语言编程学习笔记 (1)进程控制入门
想进行Linux系统开发已经很久了,一直没有付诸实践.今日终于开始学习Linux下的C语言编程,研究一天,终于大概弄明白了Linux系统进程管理的一些基本概念和编程方法,总结下来以方便大家学习和自己实 ...
- 【转】Linux基础与Linux下C语言编程基础
原文:https://www.cnblogs.com/huyufeng/p/4841232.html ------------------------------------------------- ...
- linux下C语言编程,include的默认搜索路径
C语言编程时,发现细节的魅力很大.较为详细了看了一下关于include的知识,发现了几点新知: 1.include<头文件名>和include"头文件名" 如:incl ...
- C 语言编程习惯总结
笔者能力有限,如果文中出现错误的地方,还请各位朋友能够给我指出来,我将不胜感激,谢谢~ 引言 编程习惯的培养需要的是一个长期的过程,需要不断地总结,积累,并且我们需要从意识上认识其重要性,一个良好的编 ...
- C语言编程实现Linux命令——who
C语言编程实现Linux命令--who 实践分析过程 who命令是查询当前登录的每个用户,它的输出包括用户名.终端类型.登录日期及远程主机,在Linux系统中输入who命令输出如下: 我们先man一下 ...
- 个人c语言编程风格总结
总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的.首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的. 一件事情,做成和做好中间可能隔了 ...
- Linux下C语言编程实现spwd函数
Linux下C语言编程实现spwd函数 介绍 spwd函数 功能:显示当前目录路径 实现:通过编译执行该代码,可在终端中输出当前路径 代码实现 代码链接 代码托管链接:spwd.c 所需结构体.函数. ...
- 混合语言编程:启用CLR(公共语言运行时编译)让C#调用C++
前言 关于混合C#和C++的编程方式,本人之前写过一篇博客(参见混合语言编程:C#使用原生的Directx和OpenGL),在之前的博客中,介绍了在C#的Winform和WPF下使用原生的Direct ...
随机推荐
- MVC应用程序,动态创建单选列表(RadioButtonList)
单选列表是多个选项,让用户选择一个.MVC应用程序开发中,少之不了.下面就来练习之个小功能. 这个练习,Insus.NET想实现一个日期显示的格式.在MVC中,得需从model开始创建: 再创建一个E ...
- 中小型研发团队架构实践六:如何用好消息队列RabbitMQ?
一.写在前面 使用过分布式中间件的人都知道,程序员使用起来并不复杂,常用的客户端 API 就那么几个,比我们日常编写程序时用到的 API 要少得多.但是分布式中间件在中小研发团队中使用得并不多,为什么 ...
- sqlhelper中事务的简单用法
sql1="INSERT INTO tablename(Id,col1,col2) VALUES(@Id,@col1,@col2) update tablename2 set col=@co ...
- 转载-asp.net id 和name的区别
name 是名字id是唯一标识name原来是为了标识之用,但是现在根据规范,都建议用id来标识元素.但是name在以下用途是不能替代的:1. 表单(form)的控件名,提交的数据都用控件的name而不 ...
- Lucene 学习-安装 Kibana 视图界面
Kibana 是一个开源的分析与可视化平台,设计出来用于和 Elasticsearch 一起使用的. 你可以使用 Kibana 搜索.查看.交互存放在 Elasticsearch 索引里的数据.使用各 ...
- JVM 堆内存和非堆内存
转载自:http://www.importnew.com/27645.html 堆和非堆内存 按照官方的说法:“Java 虚拟机具有一个堆(Heap),堆是运行时数据区域,所有类实例和数组的内存均从此 ...
- CSS-网站导航栏标题之间的分隔符
在一个网页上,尤其是导航栏文字与文字之间,大多数情况下都会有分隔符,也就是文字之间的一个小竖线,这个小小的分隔符,每个网站都有不同的样式,常用的写法就是用标签的边框,这个写法也比较简单,用起来也方便, ...
- css选取table元素的第一列
table tr td:first-child
- 手把手在MyEclipse中搭建Hibernate开发环境
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53414303冷血之心的博客) 在MyEclipse中如何搭建Hib ...
- 绝版Node--Sequlize搭建服务(Node全栈之路)
绝版Node--Sequlize搭建服务(Node全栈之路) 参考资料:https://itbilu.com/nodejs/npm/VkYIaRPz-.html 准备环境:Mysql,Node 前沿: ...