c语言面试题word,(word)c语言面试题.doc

(word)c语言面试题

C 语言面试题

1、局部变量能否和全局变量重名?

答: 能, 局部会屏蔽全局。 要用全局变量, 需要使用"::" ;局部变量可以与全局变量同名,

在函数内引用这个变量时, 会用到同名的局部变量, 而不会用到全局变量。 对于有些编译器而言, 在同一个函数内可以定义多个同名的局部变量, 比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

2、如何引用一个已经定义过的全局变量?

答: extern 可以用引用头文件的方式, 也可以用 extern 关键字, 如果用引用头文件方式

来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错 ,

如果你用 extern 方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连

接期间报错。

3、请写出下列代码的输出内容

#include

int main(void)

{

int a,b,c,d;

a=10;

b=a++;

c=++a;

d=10*a++;

printf("b,c,d:%d,%d,%d",b,c,d);

return 0;

}

答:10,12,120

4、 程序的局部变量存在于(堆栈) 中, 全局变量存在于 (静态区 )中, 动态申请数据存在

于( 堆)中。

7、设有以下说明和定义:

typedef union

{

long i;

int k[5];

char c;

} DATE;

struct data

{

int cat;

DATE cow;

double dog;

} too;

DATE max;

则语句 printf("%d",sizeof(struct data)+sizeof(max));的执行结果是:___52____

考点:区别 struct 与 union.(一般假定在 32 位机器上)

答:DATE 是一个 union, 变量公用空间. 里面最大的变量类型是 int[5], 占用 20 个字节.

所以它的大小是 20. data 是一个 struct, 每个变量分开占用空间. 依次为 int4 + DATE20 +

double8 = 32. 所以结果是 20 + 32 = 52. 当然...在某些 16 位编辑器下, int 可能是 2

字节,那么结果是 int2 + DATE10 + double8 = 20

5、写出下列代码的输出内容

#include

int inc(int a)

{ return(++a); }

int multi(int*a,int*b,int*c)

{ return(*c=*a**b); }

typedef int(FUNC1)(int in);

typedef int(FUNC2) (int*,int*,int*);

void show(FUNC2 fun,int arg1, int*arg2)

{

FUNC1 p=&inc;

int temp =p(arg1);

fun(&temp,&arg1, arg2);

printf("%dn",*arg2);

}

main()

{

int a; //局部变量 a 为 0;

show(multi,10,&a);

return 0;

}

答:110

6、请找出下面代码中的所有错误 (题目不错,值得一看)

说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”

#include"string.h"

main()

{

char*src="hello,world";

char* dest=NULL;

int len=strlen(src);

dest=(char*)malloc(len);

char* d=dest;

char* s=src[len];

while(len--!=0)

d++=s--;

printf("%s",dest);

return 0;

}

答:

一共有 4 个错误;

int main()

{

char* src = "hello,world";

int len = strlen(src);

char* dest = (char*)malloc(len+1);//要为分配一个空间 char* d = dest;

char* s = &src[len-1]; //指向最后一个字符

while( len-- != 0 )

*d++=*s--;

*d = 0; //尾部要加’\0’

printf("%sn",dest);

free(dest); // 使用完,应当释放空间,以免造成内存汇泄露

dest = NULL; //防止产生野指针

return 0;

}

7.对于一个频繁使用的短小函数,在 C 语言中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项!【项资源】:微信小程序。【项说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项!【项资源】:微信小程序。【项说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项!【项资源】:微信小程序。【项说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项!【项资源】:微信小程序。【项说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值