一些c语言面试题

http://hi.baidu.com/gilbertjuly/blog/item/171e19654c246afcf6365408.html

 

1.strlen, sizeof, strcpy
strlen的结果未统计’/0’所占用的1个字节
strcpy(), 以源串中的'/0'为拷贝结束标志, 直到遇到该NULL为止, 然后将NULL拷贝上. 
strncpy()以第三个参数N为拷贝结束标志, 如果source的长度小于N, 则剩余的字符全部用NULL填充. 如果source的长度大于N, 则从source中截取前N个字符,拷贝过去.

2.野指针
在free(str)后未置str为空,导致可能变成一个“野”指针。 野指针,有可能指向系统区,操作不当会导致程序运行的崩溃。

3.浮点数
浮点型变量并不精确,所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。

4.数组名
数组名指代一种数据结构,这种数据结构就是数组;
数组名可以转换为指向其指代实体的指针,而且是一个指针常量,不能作自增、自减等操作,不能被修改;
数组名作为函数形参时,沦为普通指针。在函数体内,数组名失去了本身的内涵,仅仅只是一个指针;在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。

5.结构体/类
将属于一个整体的数据成员组织为一个结构体/类,利用指针类型转换,可以将memcpy、memset等函数直接用于结构体地址,进行结构体的整体操作。

6.形参
形参和实参的类型必须要一致, 或者要符合隐含转换规则, 当形参和实参不是指针类型时, 在该函数运行时, 形参和实参是不同的变量, 他们在内存中位于不同的位置, 形参将实参的内容复制一份, 在该函数运行结束的时候形参被释放,
而实参内容不会改变.
而如果函数的参数是指针类型变量, 在调用该函数的过程中, 传个函数的是实参的地址, 在函数体内部使用的也是实参的地址, 即使用的就是实参本身. 所以在函数体内部可以改变实参的值.

7.Little Endian/big Endian
首先记住存储单元的地址总是由低到高排列。对于多字节的数值,如果先见到的是低位的字节,则系统就是Little Endian的,Little 就是"小,少"的意思,也就对应"低"。相反就是Big Endian,这里 Big "大"对应"高"。

8.十进制转二进制
整数:除2取余
小数:乘2取整

9.32 位的 float型.
一个浮点数 X, 在计算机中表示为:
X = a  *  2e  
这里 e 代表指数,  a 代表尾数,   在 计算机内部, 他们都是用二进制表示的. 其中 a 用二进制的科学表示法表示, 由于科学表示法第一位总是1 (0除外) , 所以第一位略去不计.  e 表示的时候, 因为要表示出负数, 所以 要加上127 ,  实际运算的时候要减去 127.

10.字节数

数据类型名称字节数别名取值范围
int*signed,signed int操作系统决定,即与操作系统的"字长"有关
unsigned int*unsigned由操作系统决定,即与操作系统的"字长"有关
__int81char,signed char–128 到 127
__int162short,short int,signed short int–32,768 到 32,767
__int324signed,signed int–2,147,483,648 到 2,147,483,647
__int648–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
bool1false 或 true
char1signed char–128 到 127
unsigned char10 到 255
short2short int,signed short int–32,768 到 32,767
unsigned short2unsigned short int0 到 65,535
long4long int,signed long int–2,147,483,648 到 2,147,483,647
long long8none (but equivalent to __int64)–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long4unsigned long int0 到 4,294,967,295
enum*由操作系统决定,即与操作系统的"字长"有关
float43.4E +/- 38 (7 digits)
double81.7E +/- 308 (15 digits)
long double81.7E +/- 308 (15 digits)
wchar_t2__wchar_t0 到 65,535
类型标识符类型说明长度
(字节)
范围备注
char字符型1-128 ~ 127-27 ~ (27 -1)
unsigned char无符字符型10 ~ 2550 ~ (28 -1)
short int短整型2-32768 ~ 327672-15 ~ (215 - 1)
unsigned short int无符短整型20 ~ 655350 ~ (216 - 1)
int整型4-2147483648 ~ 2147483647-231 ~ (231 - 1)
unsigned int无符整型40 ~ 42949672950 ~ (232-1)
float实型(单精度)41.18*10-38 ~ 3.40*10387位有效位
double实型(双精度)82.23*10-308 ~ 1.79*1030815位有效位
long double实型(长双精度)103.37*10-4932 ~ 1.18*10493219位有效位


11.printf格式
格式字符
说    明
d,i
以带符号的十进制形式输出整数(正数不输出符号)
o
以八进制无符号形式输出整数(不输出前导符0)
x,X
以十六进制无符号形式输出整数(不输出前导符0x),用x则输出十六进制数的a~f时以小写形式输出,用X时,则以大写字母输出
u
以无符号十进制形式输出整数
c
以字符形式输出,只输出一个字符
s
输出字符串
f
以小数形式输出单、双精度数,隐含输出6位小数
e,E
以指数形式输出实数
g,G
选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0



字符串strlen、sizeof,堆栈,字节长度,宏定义等:

编写strcpy函数:

 

 

字符串倒序:

C语言:
进制转换,置位清零,32位倒序:
C语言:
冒泡法排序:
C语言:


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值