
C 基础知识点
文章平均质量分 76
susan19890313
这个作者很懒,什么都没留下…
展开
-
ASCII码介绍
一.引入在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机比较傻,只有0和1两位数的二进制比较适合于它使用),同样的,象a、b、c、d这样的52个字母(包括大写)、以及0、1、2等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪个数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通讯而不造成混乱,那么转载 2012-04-08 09:00:14 · 1513 阅读 · 0 评论 -
c中左值,右值
一.左值的概念 lvalue 是指那些单一表达式结束之后依然存在的持久对象。例如: obj,*ptr, prt[index], ++x都是 lvalue。即左值表达式引用到一块已命名的内存区域,即左值表达式首先拥有一块内存区域,并且可以通过变量名来访问该内存区域。rvalue是指那些表达式结束时(在分号处)就不复存在了的临时对象。例如:1729, x + y, s转载 2012-04-10 19:53:33 · 1566 阅读 · 0 评论 -
c 中printf计算参数时是从右到左压入栈的
如题:示例:int i=0;printf("%d,%d\n",i,++i); 结果为:1,1原创 2012-04-10 21:09:50 · 640 阅读 · 0 评论 -
c 中运算符详解及其优先级
一、C中运算符的优先级以及结合方向 优先级运算符种类运算符1 []数组下标,()圆括号,。对象成员选择,->指针对象选择2单目运算符(右结合性)—负号运算符,++,--,*取值(*指针变量)&取地址,!(逻辑非),~(按位取反)强制类型原创 2012-04-08 08:38:45 · 596 阅读 · 0 评论 -
内存空间的划分
一、C/C++中内存区域的划分1、 栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、 堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、 全局区(静态区)(static)—,全局变量和静态变量的存原创 2012-04-24 15:49:39 · 1829 阅读 · 1 评论 -
动态内存分配(new delete)
一、动态内存分配的引入一般,变量和对象在内存中的分配都是编译器在编译程序时安排好了的,这带来了极大的不便,如数组必须大开小用,指针必须指向一个已经存在的变量或对象。动态内存分配解决了这个问题。 通常定义变量(或对象),编译器在编译时都可以根据该变量(或对象)的类型知道所需内存空间的大小,从而系统在适当的时候为他们分配确定的存储空间。这种内存分配称为静态存储分配; 有些操作对象原创 2012-04-24 15:50:55 · 8454 阅读 · 1 评论 -
static 关键字详解
一、共性:静态变量(全局的或局部的)存放在内存的静态存储区,系统自动初始化为0,自动变量的值是任意的。二、static的用法 1. 修饰全局变量------全局静态变量 在全局变量之前加上关键字static与普通全局变量的比较:共同点:都存放在内存的静态存储区不同点:(1)全局静态变量会被程序自动初始化为0,而普通全局变量的值是任意的。除非被显示的初始化。(2)原创 2012-04-24 17:11:16 · 678 阅读 · 0 评论 -
C 中常见的编程错误
1、尝试修改字符串常量 char *p = "i'm hungry!"; p[0]= 's'; 答案与分析: 上面的代码能成功通过编译,但会产生运行时的错误即造成内存的非法写操作。 "i'm hungry"实质上是字符串常量,而常量往往被编译器放在只读的内存区,不可写。p初始指向这个只读的内存区,而p[0] = 'I'则企图去写这个地方,编译器当然不会答应。原创 2012-04-11 08:56:34 · 1030 阅读 · 0 评论 -
内存中的字节对齐
一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据原创 2012-04-23 15:35:55 · 7092 阅读 · 2 评论