C面试题总结

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C面试题

1.各种变量的定义

int a;

unsigned long b;

float c;

double d;

char e;

int f[];

int *g()

{

}

注意下面几个后面的分号:

struct stu{};

union {};

enum {};

2.用变量a 给出下面的定义

a) 一个整型数

b)一个指向整型数的指针

c)一个指向指针的的指针,它指向的指针是指向一个整型数

d)一个有10 个整型数的数组

e) 一个有10 个指针的数组,该指针是指向一个整型数的。

f) 一个指向有10 个整型数数组的指针g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数

h)一个有10 个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数

结果:

a)int a;

b)b) int *a;

c) int **a;

d) int a[10];

e) int *a[10];

f) int (*a)[10];

g) int (*a)(int);

h) int (*a[10])(int);

3.讲一下hello.c的内容

#include

int main()

{

printf(“hello world!\n”);

return 0;

}

1.程序的组成:定义和函数

2.程序的main:程序的主函数,程序的入口

3.程序的语法

4.函数调用:printf

5.头文件包含:.h文件

6.转义符:\n

4.打印杨辉三角

#include

int main()

{

int a[11][20],

inti,j;

for(i=0;i<11;i++)

{

for(j=0;j<20;j++)

{

a[i][j]=0;

}

for(i=0;i<10;i++)

{

for(j=0;j<=i;j++)

{

if(j<1)

a[i][j]=1;

else if(i==0)break;

else

a[i][j]=a[i-1][j-1]+a[i-1][j]; }

}

for(i=0;i<10;i++)

{

for(j=0;j<=i;j++)

printf("%d ",a[i][j]);

printf("\n");

}

return 0;

二维数组的应用

5.sizeof 和 strlen 的区别

strlen用来求字符串的长度用的,是一个函数

而sizeof是用来求指定变量或者变量类型等所占内存大小用的,是一个函数

6.char的寻址范围

#include

#include

int main()

{

char a[1000];

int i;

for(i=0;i<1000;i++)

{

a[i]=-1-i;

}

printf("%d",strlen(a));

return 0;

}

结果是255,注意有符号和无符号的区别,有符号为-128 - 127,-128减1为127,无符号为0-255,stlrlen遇0结束,所以结为255。

7. 从上题可以引出为什么2的取反为-3

计算机都以补码存储数据,2取反后首位为1,默认有符号,计算结果为-3.

8.register static const关键词的用法

1.register:请求编译器尽可能的将变量存在cpu的内部寄存器中,只能修饰变量

(1). 修饰变量类型必须是cpu所能接收的;

(2). 变量可能不是在内存中存储,所以不能用&来获取变量地址

(3). 一些常用变量,循环变量可以用register来定义,加快程序执行效率,节省 cpu从内部抓取数据到内存的时间。

2.static:体验程序的封装性,static修饰的变量存储在全局数据区的静态数据段,如果修饰的变量不做初始化,则默认为0。

1)可以用来修饰变量:

(1)修饰局部变量,使其变成了静态局部变量:延长生命周期至整个程

序结束后再释放(开发时可替代全局变量)

Static局部变量只被初始化一次,下一次依据上一次结果值。

(2) 修饰全局变量:只能在本文件.c访问,不能在其他文件中访问(多

线程时可用)

2)修饰函数:使函数只能在本文件中调用(当函数不想被其他调用时) Static函数在内存中只有一份,普通函数在每个调用中维持一份拷贝。

3.const: const修饰一个变量,其为只读变量,应在修饰时做初始化,不能通过所修饰的变量名来修改其内存空间所对应的值。

9.struct的字对齐,半字对齐

#include

strcut stu

{

int a;

char b;

};

int main()

{

printf(“%d\n”,sizeof(stu));

return 0;

}

结果为8,struct遵循字对齐。

10.共用体

共用体所有变量共用一个地址,同时只能定义一个变量,后面的变量会把前面的覆盖

#include

union ou

{

int a;

char b;

};

int main()

{

ou.a = 48;

printf(“%d %c”,ou.a,ou.b);

return 0;

}

结果为48 0,体现了共用体的特性

相关文档
最新文档