美文网首页C语言
C语言面试题10道题 ——(一)

C语言面试题10道题 ——(一)

作者: 程序员简言 | 来源:发表于2019-04-03 10:24 被阅读2次

第一题 各个数据类型与零值比较 特别是float时 

第二题 数组做函数形参传递是

其本质是指针 而非数组名 其大小sizeof为4 

第三题各种指针 数组 函数时的定义问题 及分析步骤 

第4题 const修饰不能改变以及对他进行改变 

以及对字符串常量进行修改是的段错误

#include <stdio.h>

void fun(int *p);

void funchar(char *p);

int main()

{

    //test1

    //const char *p = "aaa";

    //*(p+1) = 'A';//   [Error] assignment of read-only location '*(p + 1u)'

    //printf("%s\n",p);

    /*test2

    char *p = "aaa";//他是存放在代码区的 

    *(p+1) = 'A';10 12//[Warning] deprecated(反对) conversion from string constant to 'char*' [-Wwrite-strings]

    printf("%s\n",p);//可以运行编译但是直接闪退 

    */

    /*test3 该测试在Windows下编译结果还是5  在linux下gcc编译器结果为6

    const int a = 5;

    fun((int *)&a); 

    printf("%d\n",a);

    */

    /*test4*/

    const char *p = "aaa";//他是存放在代码区的 

    //funchar((char**)&p);二级指针

    //funchar((char*)&p);两个结果都是 Segmentation fault (core dumped)

    printf("%s\n",p);//可以运行编译但是直接闪退 

    return 0;

}

void funchar(char *p)

{

    *(p+1) = 'A';

}

void fun(int *p)

{

    *p = 6; 

}

第5题c和c++ 中的struct有什么不同? 

【标准答案】 

c和c++ 中struct的主要区别 

c中的struct不可以含有成员函数,而c++ 中的struct可以。 

c++ 中struct和class的主要区别在于默认的存取权限不同, 

struct默认为public ,而class默认为private

第6题,关于子函数调用maollc 主函数free问题研究

 本质就是 函数形参复值的是存储空间的值 而非地址。 

题目 

void getmemory(char *p) 

{

p=(char *)malloc(100);//在这里申请

strcpy(p,“hello world”);

int main( ) 

char *str=NULL; 

getmemory(str); 

printf(“%s/n”,str); 

free(str); 

return 0; 

会出现什么问题?

【标准答案】

程序崩溃,getmemory中的malloc 不能返回 

动态内存,free ()对str操作很危险。

#include <stdio.h>

void getmemory(char *p)

{

    printf("%p\n",p);

    //printf("%s\n",*p);//*p就表示字符了......format ‘%s’ expects argument of type ‘char *’, 

    //p=(char *)malloc(100);//在这里申请

    //strcpy(p,“hello world”);

}

int main( )

{

    char *str = "aaaaa";

    char *str1 = NULL;//表示str1存储的是null,

    printf("%p\n",str1);

    getmemory(str1);//则传递过去 则p存储的也是null          //再进行malloc则表示&p形参的这个地址空间中存储的是malloc返回回来的地址。然后子函数结束 p指针释放内存  malloc地址丢失  。

    //printf(“%s/n”,str);

    //free(str);

    return 0;

第7题。没有结束标志的字符串数组 

题目 

char szstr[10]; 

strcpy(szstr,”0123456789”); 

产生什么结果?为什么? 

【标准答案】

长度不一样,出现段错误。 

第8题; 数组和链表的区别?

数组属于顺序存储的线性表 访问块 大小限定 

链表属于链式存储的线性表 删除插入块 大小无限制

【标准答案】

数组:数据顺序存储,固定大小; 

链表:数据可以随机存储,大小可动态改变

第9题

void main() 

char aa[10]; 

printf(“%d”,strlen(aa)); 

会出现什么问题?打印结果是是多少? 

strlen是以’\0’为结束标志的计数函数 

sizeof就是与定义的数据类型有关的 

【标准答案】

sizeof()和初不初始化,没有关系, 

strlen()和初始化有关,打印结果值未知。

第10题 结构体内存对齐问题

给定结构struct A 

char t:4; ——————1 

char k:4; ——————1 

unsigned short i:8; ——————2 

unsigned long m; ——————4 

}; 问sizeof(A) = ? 

【标准答案】8

struct name1{ 

char str; ——————2//内存对齐 

short x; ——————2 

int num; ——————14 

} ;求sizeof(name1)? 

【标准答案】8

struct name2{ 

char str; ——————4 

int num; ——————4 

short x; ——————2错的 应该是4 

}; 求sizeof(name2)? 

【标准答案】12

​​​​​​​​​​​​​​​​​​​你这辈子想成为什么样的程序员

持续的学习才能让你永远保持上坡路!加油!

需要学习编程或者为了入行、转行学习编程的伙伴可以关注工众号:【速学C语言】公众号回复“8” 领取全套200G免费C/C++学习资料、视频!

相关文章

网友评论

    本文标题:C语言面试题10道题 ——(一)

    本文链接:https://www.haomeiwen.com/subject/drlabqtx.html