常见问题总结——C/C++(一)

  • C语言运算符优先级:

 

http://xserver.javaeye.com/blog/800948

 

  • 常用ASCII码:

 

'0':48 'A':65 'a':97

http://baike.baidu.com/view/15482.htm

 

  • 函数指针和指针函数的区别:

 

函数指针是一个指向函数的指针,而指针函数只是说明他是一个返回值为指针的函数

http://www.kuqin.com/language/20080614/9502.html

 

  • malloc和new区别

 

malloc是C语言的库函数,new是C++的运算符。new不仅分配内存,还调用构造函数,相应的delete调用析构函数。

 

  • C语言中关键字volatile的使用

 

用在变量定义之前,表明这个变量的值可能在外部被改变,因此对这些变量的存取不能缓存到寄存器,每次使用时需要重新存取。该关键字在多线程环境下经常使用,因为在编写多线程的程序时,同一个变量可能被多个线程修改,而程序通过该变量同步各个线程。

 

  • 浮点数的存储

 

目前大多数高级语言(包括 C)都按照 IEEE-754 标准来规定浮点数的存储格式,IEEE754 规定,单精度浮点数用 4 字节存储,双精度浮点数用 8 字节存储,分为三个部分:符号位、阶和尾数。阶即指数,尾数即底数。单精度格式阶占 8 位,尾数占 24 位,符号位 1 位,双精度则为 11 为阶,53 位尾数和 1 位符号位。

 

  • 指针后面加整数的运算结果

int a=5; int *b = &a; int *c = b+1; char *d = &a; char *e = d+1; printf("%p,%p,%p,%p/n",b,c,d,e);

 

运行结果:0022FF74,0022FF78,0022FF74,0022FF75

 

  • 宏和内联函数的区别

 

内联函数的功能和宏定义差不多,即在编译阶段进行替换,减少运行时间,提高运行效率。区别是

1、宏定义没有语法检查,内联函数有语法检查。

2、宏的参数替换是不经计算而直接替换的,而内联函数属于单值传递。

  • 一个由 C/C++ 编译的程序内存占用情况
内存地址由高到低:栈区、堆区、全局区(静态区)、文字常量区、代码区
至于用const定义的常量,要看在哪定义,全局常量放在全局区,在函数内定义放在栈区。
  • 位操作技巧
1、把数n的某些位置0,其他位不变。比如将n的最后四位置0,则将n&11110000
2、把数n的某些位置1,其他位不变。比如将n的最后四位置1,则将n|00001111
  • 动态申请一个的二维数组,row行,col列
int row=5,col=4;//row:行;col:列 int i=0; //申请 int **matrix = new int*[row]; for(i=0;i<row;i++) matrix[i]= new int[col]; //释放 for(i=0;i<row;i++) delete []matrix[i]; delete matrix;

你可能感兴趣的:(多线程,c,delete,存储,语言,Matrix)