上一页 1 ··· 9 10 11 12 13 14 15 下一页
摘要: memest原型(please type "man memset" in your shell)void *memset(void *s,int c, size_t n);memset:作用是在一段内存块中填充某个给定的值,它对较大的结构体或数组进行清零操作的一种最快方法。常见的三种错误第一: 搞反了c 和 n的位置.一定要记住 如果要把一个char a[20]清零, 一定是 memset(a, 0, 20)而不是 memset(a, 20,0)第二: 过度使用memset, 我想这些程序员可能有某种心理阴影, 他们惧怕未经初始化的内存, 所以他们会写出这样的代码:char 阅读全文
posted @ 2013-01-01 01:25 _** 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 一、好首先看看sizeof和strlen在MSDN上的定义:首先看一MSDN上如何对sizeof进行定义的:sizeof Operator sizeof expression The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t. The expression is either an identifier or a 阅读全文
posted @ 2013-01-01 01:11 _** 阅读(298) 评论(0) 推荐(0) 编辑
摘要: #define Conn(x,y) x##y#define ToChar(x) #@x#define ToString(x) #xx##y表示什么?表示x连接y,举例说:int n = Conn(123,456); 结果就是n=123456;char* str = Conn("asdf", "adf")结果就是 str = "asdfadf";怎么样,很神奇吧再来看#@x,其实就是给x加上单引号,结果返回是一个const char。举例说:char a = ToChar(1);结果就是a='1';做个越界试验char 阅读全文
posted @ 2013-01-01 01:09 _** 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 二叉树作为树的一种,是一种重要的数据结构,也是面试官经常考的东西。昨天看了一下关于树中的面试题,发现二叉树中的面试题比较常见的题型大概有下面几个:创建一颗二叉树(先序,中序,后序)、遍历一颗二叉树(先序,中序,后序和层次遍历)、求二叉树中叶子节点的个数、求二叉树的高度、求二叉树中两个节点的最近公共祖先、打印和为某一值的全部路径、求某一节点是否在一个树中等等。再详细的说这些面试题之前,不妨先看一下几种常见的二叉树:完全二叉树:若二叉树的高度是h,除第h层之外,其他(1~h-1)层的节点数都达到了最大个数,并且第h层的节点都连续的集中在最左边。想到点什么没?实际上,完全二叉树和堆联系比较紧密哈~~ 阅读全文
posted @ 2012-12-30 19:03 _** 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 一、什么是操作符重载操作符重载可以分为两部分:“操作符”和“重载”。说到重载想必都不陌生了吧,这是一种编译时多态,重载实际上可以分为函数重载和操作符重载。运算符重载和函数重载的不同之处在于操作符重载重载的一定是操作符。我们不妨先直观的看一下所谓的操作符重载: 1 #include <iostream> 2 3 using namespace std; 4 5 int main() 6 { 7 int a = 2 , b = 3; 8 float c = 2.1f , d = 1.2f; 9 cout<<"a + b = "<<a+b< 阅读全文
posted @ 2012-12-30 19:01 _** 阅读(669) 评论(0) 推荐(0) 编辑
摘要: 为了统一全世界各国语言文字和专业领域符号(例如数学符号、乐谱符号)的编码,ISO制定了ISO 10646标准,也称为UCS(Universal Character Set)。UCS编码的长度是31位,可以表示231个字符。如果两个字符编码的高位相同,只有低16位不同,则它们属于一个平面(Plane),所以一个平面由216个字符组成。目前常用的大部分字符都位于第一个平面(编码范围是U-00000000~U-0000FFFD),称为BMP(Basic Multilingual Plane)或Plane 0,为了向后兼容,其中编号为0~256的字符和Latin-1相同。UCS编码通常用U-xxxxx 阅读全文
posted @ 2012-12-30 18:56 _** 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 2.main函数和启动例程 为什么汇编程序的入口是_start,而C程序的入口是main函数呢?本节就来解释这个问题。我们的汇编和链接步骤是:$ as hello.s -o hello.o$ ld hello.o -o hello以前我们常用gcc main.c -o main命令编译一个程序,其实也可以分三步做,第一步生成汇编代码,第二步生成目标文件,第三步生成可执行文件:$ gcc -S main.c$ gcc -c main.s$ gcc main.o-S选项生成汇编代码,-c选项生成目标文件,此外在还讲过-E选项只做预处理而不编译,如果不加这些选项则gcc执行完整的编译步骤,直到最后链 阅读全文
posted @ 2012-12-30 18:53 _** 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 3.变量的存储布局 首先看下面的例子:例19.2.研究变量的存储布局#include <stdio.h>const int A = 10;int a = 20;static int b = 30;int c;int main(void){ static int a = 40; char b[] = "Hello world"; register int c = 50; printf("Hello world %d\n", c); return 0;}我们在全局作用域和main函数的局部作用域各定义了一些变量,并且引入一些新的关键字const、 阅读全文
posted @ 2012-12-30 18:53 _** 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 1.函数调用我们用下面的代码来研究函数调用的过程。例19.1.研究函数的调用过程int bar(int c, int d){ int e = c + d; return e;}int foo(int a, int b){ return bar(a, b);}int main(void){ foo(2, 3); return 0;}如果在编译时加上-g选项那么用objdump反汇编时可以把C代码和汇编代码穿插起来显示,这样C代码和汇编代码的对应关系看得更清楚。反汇编的结果很长,以下只列出我们关心的部分。$ gcc main.c -g$ objdump -dS a.out ...08048394 阅读全文
posted @ 2012-12-30 18:49 _** 阅读(306) 评论(0) 推荐(0) 编辑
摘要: MBCS(多字节码)早在Windows采用Unicode统一编码进行语言管理之前,Windows为了能够进行非ANSI标准字符的输出,于是采用两个字节来表示这些语言文字。因为这些双字节文字和ANSI是混和在一起的,为了加以区别,Windows将这些字符的最高位置为1(即这些双字节文字的每个字节都>=127),所以这种表示法可以表示 127x127 约一万多种非ANSI文字,其本上可以表示任何一种语言的常用文字了。于是,Windows为每一个区域版本,都制定了分别独立的文字编码,这就是MBCS(多字节码)。Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言 阅读全文
posted @ 2012-12-30 18:31 _** 阅读(935) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 下一页