程序员面试宝典 第1-8章

*ptr  += 12 应为 *ptr = *ptr + 12ptr++

 

Printf(“%d%d\n,a,b;printf的参数是从右向左计算。

运算符优先级

(int&)a 相当于将变量a所在地址开始的sizeofint)个字节当成int型的数据输出。

如果一个操作数是long型,一个是unsigned int型,那么只有机器上的long型的长度足以存放unsigned int的所有值时(32位机一般不满足),unsigned int 才会转化为long型,否则两个操作数都被提升为unsignedlong型。若两个操作数都不是long型而其中一个是unsig int型,则另一个也被转换成unsigned int型,否则俩个操作数都一定是int

 

Unsigned char a = 0xA5;

Unsigned char b = ~a>> 4+1;

计算上述表达式时,编译器先把a4 转换成int类型()所谓整形提升后再进行计算,当计算结果出来后,再把结果转换成unsigned char 赋值给b

~ 优先于>> 。所以先取反,再进行加法运算,最后进行移位最后 b = 250

 (X & y) + ( (x ^ y)>>1) 表达式用来计算x y 的平均值。

 

交换a b 的值: 1a = a + b; b = a-b; a = a-b; 2,a = a ^ b; b = a ^ b;  a = a ^ b;

Const关键词:1,可以定义const常量。2,可以修饰函数的参数和返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,提高程序的健壮性。

 

Const常量有数据类型,宏没有。编译器对前者有类型安全检查,后者仅进行字符替换,

 

对于 n 字节的元素,它的首地址能被n整除,才能获得最好的性能。

 

空类所占空间:

 

 

指针和引用的区别:

1,  非空区别,在任何情况下都不能使用指向空值的引用。使用引用的代码效率比使用指针要高

2,  合法性区别。在使用引用之前不需要测试起合法性,但指针应该总是被测试,防止其为空。

3,  可修改区别。指针可以被重新赋值指向另一个不同的对象。但是引用则总是指向在初始化被指定的对象,不能改变,但其指定的内容可以改。

 

 

证明引用的同时必须同时初始化。Const常量赋值时必须同时初始化。

 

 

#include<stdio.h>

Void GetMemory( char *p, int num)

{

         P  = (char * )malloc(sizeof(char)*num);

};

Int main()

{

         Char * str = NULL;

         GetMemory(str, 100);

         Strcpy( str, “hello”);

         Return 0;

}

GetMemory中的*p实际上是主函数中的str的一个副本,编译器总是要为函数的每一个参数制作临时副本。

 

 

 

编程中很难发现错误的是迷途指针。迷途指针也叫悬浮指针、失控指针是当对一个指针进行delete操作后——这样会释放他所指向的内存—并没有把他设置为空产生的。

 

 

Malloc/free   new/delete

Mallocfreec++/c语言标准库函数,new/deleteC++的运算符。他们都可以用于动态内存的申请与释放。

对于非内部数据类型的对象而言,只用malloc/free无法满足动态对象的要求。对象创建时要执行构造函数,消亡时要执行析构函数,malloc/free为库函数,不在编译器的控制权限内,不能够把执行构造函数和析构函数的任务强加于malloc/free. C++需要一个完成动态内存分配和初始工作的运算符new

 

 

以上节选自:《程序员面试宝典》
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值