12个有趣的C语言面试题

http://www.csdn.net/article/2012-09-06/2809604-12-c-interview-questions/2

1) 输入字符串 要用 fets()代替gets(), 因为gets没有对字符串长度进行检查,容易溢出.

2) 拷贝未知长度的字符串, 也要用strncpy()代替strcpy(),理由同上

3) main函数的返回类型为int, 这点非常重要,特别当程序是作为依赖于程序成功运行的脚本的一部分运行时

4)main函数结束时,没有free,程序退出,系统会自动free这个程序分配的所有内存,但是,如果代码处于一个循环中,就会导致严重的内存泄漏.
5) 要free一个指针, 指针变量的指向就不能随便更改. p++后,再free(p),就会出错

6) #include <stdlib.h>  int atexit( void (*func)(void) );
  可以实现,多重调用. 但是需要与return 或者 exit配合使用, _exit()会使其无效.

7) void*可以接受任何类型的指针

8) char* k = *ptr++; 则先执先 k = ptr, 再执行 ptr++;

9) char* ptr = "Linux"; 这段代码定义的字符串是常量字符串,如果用*ptr = 'T',就会出现seg-fault或者崩溃.

下面的程序确实会出错:

#include<stdio.h>

int main()
{

	char* ptr = "Linux";
	*ptr = 'T';
	printf("%s\n", ptr);
         return 0;
}


 

10) 会改变自己名字的进程, 就是改变main()函数的参数,argv[0];

11)不能返回局部变量的地址

12) printf计算参数变量值,是从右向左计算 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值