c语言字符串碎片问题,C语言最新面试题系列三

原标题:C语言最新面试题系列三

1、-1,2,7,28,,126请问28和126中间那个数是什么?为什么?

2、用两个栈实现一个队列的功能?要求给出算法和思路!

3、在c语言库函数中将一个字符转换成整型的函数是atool()吗,这个函数的原型是什么?

4、二维字符数组与一维字符指针数组的差异

5、操作系统的内存分配一般有哪几种方式,各有什么优缺点?

6、操作系统的致命错误有哪些?

7、有结构AA,中间有cc域,比较这两种对cc引用的不同:pp,qq各应如何定义?

pp->cc, qq.cc

答案区:

1、第一题的答案应该是4^3-1=63

规律是:

n^3-1(当n为偶数0,2,4)

n^3+ 1(当n为奇数1,3,5)

2、设2个栈为A,B, 一开始均为空.

入队:

将新元素push入栈A;

出队:

(1)判断栈B是否为空;

(2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;

(3)将栈B的栈顶元素pop出;

这样实现的队列入队和出队的平摊复杂度都还是O(1)。

3、函数名: atol

功 能: 把字符串转换成长整型数

用 法: long atol(const char *nptr);

程序例:

#include

#include

int main(void)

{

long l;

char *str = "98765432";

l = atol(lstr);

printf("string = %s integer = %ld\n", str, l);

return(0);

}

4、二维字符数组:char a[][] = { "abcde"; "a"; "tpp"; "poipqqewr" };

一维字符指针数组:char *b[] = {"abcde"; "a"; "tpp"; "poipqqewr"};

前者在定义空间是固定分配的,后者如果在定义时未初始化则在使用时要注意。如果按照以上的初始化a与b,占用的系统空间(不考虑优化):前者为40B的数据空间和一个32位的地址数;后者为22B的数据空间和四个32位的地址数。在使用时后者如果赋值就一定要注意长度问题。

5、定长和变长。

变长:内存时比较灵活,但是易产生内存碎片。

定长:灵活性差,但分配效率较高,不会产生内存碎片。

6、致命错误主要包括启动配置错、内部资源耗尽和各种其它类型的不可恢复性错误。

7、pp是指向结构AA的指针,定义为struct AA *pp;

qq是结构AA类型的变量,定义为 struct AA qq;返回搜狐,查看更多

责任编辑:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值