博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  C/C++

摘要:指针与引用1:指针和引用的差别 (1)非空区别。即指针可以赋空值,但引用不能。 (2)合法性区别。在使用引用之前不需要测试它的合法性,相反,指针则总是被测试,防止其为空。 (3)可修改区别。引用指向的对象在初始化时确定,以后不可改变; 指针可改变指向。 (4)应用区别。使用指针:a.存在不指向任何对象的情况。b.不同时刻指向不同的对象。 使用引用:总是指向同一对象,并且不需要改变指向。例题:1:please check out which of the following statements are wrong?#include <iostream>using namespace 阅读全文

posted @ 2011-04-07 20:55 ¥忘%风 阅读(2845) 评论(10) 推荐(5)

摘要:程序员面试宝典读书笔记(二)一:宏定义面试例题1:如何用一个宏定义FIND求一个结构体CTYPE里某个变量CNUM相对了CTYPE的编移量 ?如:stuct student{ int a; char b[20]; double ccc;}则:FIND(student,a); //等于0FIND(student,b); //等于4Answer: #define FIND(struc, e) (size_t)&(((struc*)0)->e)(struc*)0 //表示将常量0强制转化为struc *型指针所指向的地址&(((struc*)0)->e) /*表示取结构体 阅读全文

posted @ 2011-04-01 17:54 ¥忘%风 阅读(2419) 评论(7) 推荐(2)

摘要:原文链接:sizeof与strlen的区别strlen与sizeof的区别1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof不是函数,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以'\0'结尾的。4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。 5.大部分编译程序在编译的时候就把sizeof计算过了 是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因 char 阅读全文

posted @ 2011-04-01 17:37 ¥忘%风 阅读(483) 评论(0) 推荐(0)

摘要:原文链接:sizeof(结构体)和内存对齐有的时候,在脑海中停顿了很久的“显而易见”的东西,其实根本上就是错误的。就拿下面的问题来看:struct T{ char ch; int i ;};使用sizeof(T),将得到什么样的答案呢?要是以前,想都不用想,在32位机中,int是4个字节,char是1个字节,所以T一共是5个字节。实践出真知,在VC6中测试了下,答案确实8个字节。哎,反正受伤的总是我,我已经有点麻木了,还是老老实实的接受吧!为什么答案和自己想象的有出入呢?这里将引入内存对齐这个概念。许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个 阅读全文

posted @ 2011-04-01 17:25 ¥忘%风 阅读(666) 评论(0) 推荐(0)

摘要:原文链接:C++中的常量常量是一种标识符,它的值在运行期间恒定不变。C语言用 #define来定义常量(称为宏常量)。C++ 语言除了 #define外还可以用const来定义常量(称为const常量)。5.1 为什么需要常量如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?(1)程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思, 用户则更加不知它们从何处来、表示什么。(2)在程序的很多地方输入同样的数字或字符串,难保不发生书写错误。(3)如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错。【规则5-1-1】 尽量使用含义直观的常量来表示那些将在程 阅读全文

posted @ 2011-04-01 16:40 ¥忘%风 阅读(729) 评论(0) 推荐(0)

摘要:(转自博客园)原文链接:内联函数与宏定义的差别内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接呗镶嵌到目标代码中。 内联函数要做参数类型检查,这是内联函数跟宏相比的优势。inline是指嵌入代码,就是在调用函数的地方不是跳转,而是把代码直接写到那里去。对于短小的代码来说,inline可以带来一定的效率提升,而且和C时代的宏函数相比,inline更安全可靠。可是这个是以增加空间消耗为代价的。至于是否需要inline函数就需要根据你的实际情况取舍了。 inline一般只用于如下情况: (1)一个函数不断被重复调用。 (2)函数只有简单的几行,且函数不包 阅读全文

posted @ 2011-04-01 16:26 ¥忘%风 阅读(2451) 评论(0) 推荐(0)

摘要:转载自: guiwaa's blogC 语言中,术语副作用(side effect)是指对数据对象或者文件的修改。例如,以下语句 var = 99;的副作用是把 var 的值修改成 99。对表达式求值也可能产生副作用,例如: se = 100对这个表达式求值所产生的副作用就是 se 的值被修改成 100。 序列点(sequence point)是指程序运行中的一个特殊的时间点,在该点之前的所有副作用已经结束,并且后续的副作用还没发生。 C 语句结束标志——分号(;)是序列点。也就是说,C 语句中由赋值、自增或者自减等引起的副作用在分号之前必须结束。我们以后会说到一些包含序列点的运算符。 阅读全文

posted @ 2011-03-22 18:06 ¥忘%风 阅读(321) 评论(0) 推荐(0)

摘要:程序员面试宝典第二版读书笔记(一)1:i++;What will be the output of the following C code ?#include <stdio.h>int main() { int b = 3; int arr[] = {6, 7, 8, 9, 10}; int *ptr = arr; *(ptr++) += 123; printf("%d, %d\n", *ptr, *(++ptr));}2:编程风格We have two pieces of code, which one do you prefer, and tell why 阅读全文

posted @ 2011-03-21 22:25 ¥忘%风 阅读(2094) 评论(7) 推荐(6)