没有合适的资源?快使用搜索试试~ 我知道了~
首页C语言面试题大汇总_C语言,面试题,汇总2.PDF
C语言面试题大汇总_C语言,面试题,汇总2.PDF

C语言面试题大汇总_C语言,面试题,汇总2.PDFC语言面试题大汇总_C语言,面试题,汇总2.PDFC语言面试题大汇总_C语言,面试题,汇总2.PDFC语言面试题大汇总_C语言,面试题,汇总2.PDFC语言面试题大汇总_C语言,面试题,汇总2.PDFC语言面试题大汇总_C语言,面试题,汇总2.PDF
资源详情
资源评论
资源推荐

C语言面试题大汇总|C语言,面试题,汇总-中国源码
=>中国源码:全球著名开源项目大本营
● 注册会员
● 会员登录
● 控制面板
● 设为首页
● 加入收藏
● 推荐本站
博客 下载
论坛 RSS阅读
首页 ·开源动态 ·应用软件 ·开源操作系统 ·程序设计 ·开源文章 ·网络协议与安全 ·专题·图片文章·搜索· 投
稿
栏目搜索
当前位置:
首页 >> 程序设计 >> C语言面试题大汇总
C语言面试题大汇总
作者: 来源:zz 发表时间:2006-06-23 浏览次数: 10760 字
号:
大 中 小
二、位域的使用位域的使用和结构成员的使用相同,其一般形式为: 位域变量名•位域名 位域
允许用各种格式输出。
http://www.yuanma.org/data/2006/0623/article_928_1.htm (1 of 17)2006-9-26 9:57:46

C语言面试题大汇总|C语言,面试题,汇总-中国源码
main(){
struct bs
{
unsigned a:1;
unsigned b:3;
unsigned c:4;
} bit,*pbit;
bit.a=1;
bit.b=7;
bit.c=15;
pri
改错:
#include <stdio.h>
int main(void) {
int **p;
int arr[100];
p = &arr;
return 0;
}
解答:
搞错了,是指针类型不同,
int **p; //二级指针
&arr; //得到的是指向第一维为100的数组的指针
#include <stdio.h>
int main(void) {
int **p, *q;
int arr[100];
q = arr;
p = &q;
return 0;
}
下面这个程序执行后会有什么错误或者效果:
#define MAX 255
int main()
{
unsigned char A[MAX],i;//i被定义为unsigned char
for (i=0;i<=MAX;i++)
A[i]=i;
}
解答:死循环加数组越界访问(C/C++不进行数组越界检查)
http://www.yuanma.org/data/2006/0623/article_928_1.htm (2 of 17)2006-9-26 9:57:46

C语言面试题大汇总|C语言,面试题,汇总-中国源码
MAX=255
数组A的下标范围为:0..MAX-1,这是其一..
其二.当i循环到255时,循环内执行:
A[255]=255;
这句本身没有问题..但是返回for (i=0;i<=MAX;i++)语句时,
由于unsigned char的取值范围在(0..255),i++以后i又为0了..无限循环下去.
struct name1{
char str;
short x;
int num;
}
struct name2{
char str;
int num;
short x;
}
sizeof(struct name1)=8,sizeof(struct name2)=12
在第二个结构中,为保证num按四个字节对齐,char后必须留出3字节的空间;同时为保证整个结构的自
然对齐(这里是4字节对齐),在x后还要补齐2个字节,这样就是12字节。
intel:
A.c 和B.c两个c文件中使用了两个相同名字的static变量,编译的时候会不会有问题?这两个static变量会保
存到哪里(栈还是堆或者其他的)?
static的全局变量,表明这个变量仅在本模块中有意义,不会影响其他模块。
他们都放在数据区,但是编译器对他们的命名是不同的。
如果要使变量在其他模块也有意义的话,需要使用extern关键字。
struct s1
{
int i: 8;
int j: 4;
int a: 3;
double b;
};
struct s2
{
int i: 8;
int j: 4;
double b;
int a:3;
};
http://www.yuanma.org/data/2006/0623/article_928_1.htm (3 of 17)2006-9-26 9:57:46

C语言面试题大汇总|C语言,面试题,汇总-中国源码
printf("sizeof(s1)= %d\n", sizeof(s1));
printf("sizeof(s2)= %d\n", sizeof(s2));
result: 16, 24
第一个struct s1
{
int i: 8;
int j: 4;
int a: 3;
double b;
};
理论上是这样的,首先是i在相对0的位置,占8位一个字节,然后,j就在相对一个字节的位置,由于一
个位置的字节数是4位的倍数,因此不用对齐,就放在那里了,然后是a,要在3位的倍数关系的位置
上,因此要移一位,在15位的位置上放下,目前总共是18位,折算过来是2字节2位的样子,由于double
是8 字节的,因此要在相对0要是8个字节的位置上放下,因此从18位开始到8个字节之间的位置被忽
略,直接放在8字节的位置了,因此,总共是16字节。
第二个最后会对照是不是结构体内最大数据的倍数,不是的话,会补成是最大数据的倍数
Top
回复人:
free131(白日?做梦!) ( ) 信誉:100
2006-4-17 10:17:34
得分:0
同学的4道面试题,应聘的职位是搜索引擎工程师,后两道超级难,(希望大家多给一些算发)
1.给两个数组和他们的大小,还有一动态开辟的内存,求交集,把交集放到动态内存dongtai,并且返回交集个数
long jiaoji(long* a[],long b[],long* alength,long blength,long* dongtai[])
2.单连表的建立,把'a'--'z'26个字母插入到连表中,并且倒叙,还要打印!
方法1:
typedef struct val
{ int date_1;
struct val *next;
}*p;
void main(void)
{ char c;
for(c=122;c>=97;c--)
{ p.date=c;
p=p->next;
}
p.next=NULL;
}
}
方法2:
node *p = NULL;
node *q = NULL;
node *head = (node*)malloc(sizeof(node));
head->data = ' ';head->next=NULL;
node *first = (node*)malloc(sizeof(node));
first->data = 'a';first->next=NULL;head->next = first;
http://www.yuanma.org/data/2006/0623/article_928_1.htm (4 of 17)2006-9-26 9:57:46
剩余16页未读,继续阅读










安全验证
文档复制为VIP权益,开通VIP直接复制

评论2