C语言知识点
cosmoslife
多媒体编程、网络编程、系统编程、网络安全编程
展开
-
嵌入式Linux网址
Arm Linuxhttp://www.arm.linux.org.uk/busybox的主页 busybox tinyloginhttp://www.busybox.netArm MCU datasheethttp://www.arm.com/documentation/ARMProcessor_Cores/index.html kernel 的主页h转载 2012-06-03 10:40:19 · 829 阅读 · 0 评论 -
指针内存分配
return语句不可返回指向“栈内存”的“指针”或者“引用”,因为该内存在函数体结束时被自动销毁。char * Func(void){char str[] = "hellow world";// str的内存位于栈上 return str; // 将导致错误}void Test4(void){char *str = NULL; str = GetSt转载 2012-09-29 11:29:43 · 622 阅读 · 0 评论 -
位运算
位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果。 位运算符有: &(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。 其中,按位取反运算符是单目运算符,其余均为双目运算符。 位运算符的优先级从高到低,依次为~、&、^、|, 其中~的结合方向自右至左,且优先级高转载 2012-07-31 11:17:44 · 463 阅读 · 0 评论 -
C语言深入学习系列 - 字节对齐&内存管理
用C语言写程序时需要知道是大端模式还是小端模式。 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。 为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8转载 2012-07-21 11:16:47 · 1137 阅读 · 0 评论 -
C语言:内存字节对齐详解
一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只转载 2012-07-21 11:22:11 · 808 阅读 · 0 评论 -
【C】sizeof与strlen的比较
一、sizeofsizeof(…)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值转载 2012-07-15 02:16:12 · 606 阅读 · 0 评论 -
C语言函数堆栈的思考
源于一段课程案例的代码,拿编译器编译一下,结果不对,反复查了一下,无意中把结果改出来了,于是修改代码探索原因。虽然还有一些地方不太明确的,先总结一笔。 源码是这样的: 010203040506070809101112131415转载 2012-07-15 02:06:37 · 679 阅读 · 0 评论 -
堆和栈的区别
非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据转载 2012-07-15 02:13:39 · 688 阅读 · 0 评论 -
C语言提高代码效率5种方法
一段完美的代码不仅在于找到一个给定的问题的解决方案,但在它的简单性,有效性,紧凑性和效率(内存)。设计的代码比实际执行更难。因此,每一个程序员当用C语言开发时,都应该保持这些基本的东西在头脑中。本文向你介绍规范你的C代码的10种方法。 1、在可能的情况下使用typedef替代macro.当然有时候你无法避免macro,但是typedef更好。 typedef int* INT_PTR;原创 2012-06-28 20:57:50 · 943 阅读 · 0 评论 -
Makefile详解(超级好)
概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解 HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会转载 2012-07-08 02:30:59 · 1018 阅读 · 0 评论 -
在Visual C 中使用内联汇编(_emit)(精华)
一、内联汇编的优缺点 因为在Visual C++中使用内联汇编不需要额外的编译器和联接器,且可以处理Visual C++中不能处理的一些事情,而且可以使用在C/C++中的变量,所以非常方便。内联汇编主要用于如下场合: 1.使用汇编语言写函数; 2.对速度要求非常高的代码; 3.设备驱动程序中直接访问硬件; 4."Naked" Call的初始化和结束代原创 2012-07-05 23:47:49 · 1701 阅读 · 0 评论 -
回调函数
对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。 什么是回调函数? 简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。 为什么转载 2012-06-12 22:04:11 · 600 阅读 · 0 评论 -
16道嵌入式C语言面试题(经典)
预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得预处理器将为你计算常数表达式的值转载 2012-06-03 10:34:07 · 918 阅读 · 0 评论 -
用 C 语言编写 Windows 服务程序的五个步骤
摘要 Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。最后,你可以用所学知识编写自己的 Windows 服务。 当初我写第一个 NT 服务时,我到 MSDN 上找例子。在那里我找到了一转载 2013-04-10 13:46:48 · 695 阅读 · 0 评论