嵌入式C语言面试题大全(看这个就够了)

合集下载

嵌入式面试题及答案「C语言」

嵌入式面试题及答案「C语言」

嵌入式面试题及答案「C语言」嵌入式工程师比拟常见的嵌入式面试试题有哪些考点?下面为大家分享嵌入式工程师面试试题及答案,希望对大家参加面试有所帮助!1. 用预处理指令#define 声明一个常数,用以说明1年中有多少秒(忽略闰年问题)#define SECONDSPERYEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1). #define 语法的根本知识(例如:不能以分号完毕,括号的使用,等等)2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。

3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。

4). 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。

记住,第一印象很重要。

2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。

#define MIN(A,B) ((A) <= (B) (A) : ))C/C++试题集 C/C++ Development这个测试是为下面的目的而设的:1). 标识#define在宏中应用的根本知识。

这是很重要的,因为直到嵌入(inline)操作符变为标准C的一局部,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能到达要求的性能,嵌入代码经常是必须的方法。

2). 三重条件操作符的知识。

这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。

3). 懂得在宏中小心地把参数用括号括起来4). 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?Least = MIN(*p++, b);3. 预处理器标识#error的目的是什么?如果你不知道答案,请看参考文献1。

这问题对区分一个正常的伙计和一个书呆子是很有用的。

嵌入式C语言面试题a

嵌入式C语言面试题a
死循环(Infinite loops)
4. 嵌入式系统中经常要用到无限循环,你怎么样用 C 编写死循环呢?
这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出 这个作为方案,我将用这个作为一个机会去探究他们这样做的 基本原理。如果他们的基本答案是:“我被教着这样做,但从没有想到过为什么。”这会 给我留下一个坏印象。 第三个方案是用 goto Loop: ... goto Loop;
int a; void set_bit3(void) { a |= (1<<3); } void clear_bit3(void) { a &= ~(1<<3); } 15. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展―让标准 C 支持中断。具代表事实是,产生了一个新的关键 字__interrupt。下面的代码就使用了__interrupt 关键字去定义了一个中断服务子程序(ISR), 请评论一下这段代码的。
在许多的处理器/编译器中ห้องสมุดไป่ตู้浮点一般都是不可重入的。有些处理器/编译器需要让额处的 寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有 效率的,在ISR中做浮点运算是不明智的。 printf()经常有重入和性能上的问题。 16 . 下面的代码输出是什么,为什么?
void foo(void) { unsigned int a = 6; int b = -20; (a+b > 6) ? puts("> 6") : puts("<= 6"); } 答案是输出是">6"。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动 转换为无符号类型。 因此-20 变成了一个非常大的正整数,所以该表达式计算出的结果大 于 6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。

嵌入式面试最常用的307个试题和答案(一)

嵌入式面试最常用的307个试题和答案(一)

嵌入式面试最常用的307个试题和答案(一)经典嵌入式面试题总结C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。

这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。

从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。

这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这个愚蠢的问题吗?如要你答出某个字符的ASCII值。

这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标志着出题者也许花时间在微机上而不上在嵌入式系统上。

如果上述任何问题的答案是"是"的话,那么我知道我得认真考虑我是否应该去做这份工作。

从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质:最基本的,你能了解应试者C语言的水平。

不管怎么样,看一下这人如何回答他不会的问题也是满有趣。

应试者是以好的直觉做出明智的选择,还是只是瞎蒙呢?当应试者在某个问题上卡住时是找借口呢,还是表现出对问题的真正的好奇心,把这看成学习的机会呢?我发现这些信息与他们的测试成绩一样有用。

有了这些想法,我决定出一些真正针对嵌入式系统的考题,希望这些令人头痛的考题能给正在找工作的人一点帮住。

这些问题都是我这些年实际碰到的。

其中有些题很难,但它们应该都能给你一点启迪。

这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。

为了让你能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为你所用,请自行按你的意思分配分数。

预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:; #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等); 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。

2022年度嵌入式C语言面试题库(含答案)

2022年度嵌入式C语言面试题库(含答案)

2022年度嵌入式C语言面试题库(含答案)1、什么是嵌入式C?/ 你对嵌入式C 语言的理解是什么?嵌入式 C 是 C 标准委员会指定的 C 编程语言的一组语言扩展。

它通常用于解决不同嵌入式系统的 C 扩展之间存在的共性问题。

嵌入式 C 编程通常需要对 C 语言进行非标准扩展,以支持增强的微处理器功能,例如定点算术、多个不同的内存库和基本I/O 操作。

2、你对嵌入式系统的理解是什么?嵌入式系统是一种基于微处理器的计算机硬件系统和软件,旨在执行特定的功能。

嵌入式系统要么是一个独立的系统,要么是一个大型系统的一部分。

3、C语言和嵌入式C之间的主要区别是什么?C语言是一种通用的高级编程语言,用于设计任何基于桌面的应用程序。

另一方面,嵌入式C 是 C 语言的扩展,用于开发基于微控制器的应用程序。

在这里,嵌入式是指主机或微控制器,而不是编程语言。

让我们在下表中来看看C语言和嵌入式C 之间的主要区别。

C语言和嵌入式C 的区别:C语言嵌入式C C编程语言是一种通用编程语言,用于设计任何基于桌面的应用程序。

嵌入式C 只是一种扩展C 编程语言,它用于开发基于微控制器的应用程序。

C编程语言是一种高级编程语言。

嵌入式4、嵌入式C 是一种编程语言吗?嵌入式C 不是核心编程语言。

它是 C 编程语言的扩展,用于开发基于微控制器的应用程序。

嵌入式 C 语言从普通 C 编程语言引入的扩展是I/O 硬件寻址、定点算术运算、访问地址空间等。

5、嵌入式C 的主要优点是什么?嵌入式C 是 C 编程语言的扩展。

让我们看看嵌入式 C 的主要优势:嵌入式 C 的主要优势:嵌入式C的编码速度快,简单易懂。

它不需要任何硬件更改,例如额外的内存或存储空间,因为它始终执行相同的任务。

它专注于其特定任务,一次只执行一项任务。

它主要用于现代自动化应用。

嵌入式应用程序非常适合工业用途。

6、嵌入式C 的主要缺点是什么?嵌入式C 的缺点:嵌入式C 一次只执行一项任务,因此当我们必须同时执行多项任务时,它不是首选。

求职:嵌入式程C语言笔试面试题

求职:嵌入式程C语言笔试面试题

求职:嵌入式程C语言笔试面试题求职:嵌入式程C语言笔试(面试)题C语言测试是招聘嵌入式系统程序员以及电子控制类专业求职过程中必须面临的。

从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。

这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢的问题吗?如要你答出某个字符的ASCII值。

这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标志着出题者也许花时间在微机上而不是在嵌入式系统上。

如果上述任何问题的答案是"是"的话,那么我知道我得认真考虑我是否应该去做这份工作。

从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质:最基本的,你能了解应试者C语言的水平。

不管怎么样,看一下这人如何回答他不会的问题也是满有趣。

应试者是以好的直觉做出明智的选择,还是只是瞎蒙呢?当应试者在某个问题上卡住时是找借口呢,还是表现出对问题的真正的好奇心,把这看成学习的机会呢?我发现这些信息与他们的测试成绩一样有用。

下面这些令人头痛的考题能给正在找工作的人一点帮助。

其中有些题很难,但它们应该都能给你一点启迪。

这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。

为了让你能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为你所用,请自行按你的意思分配分数。

预处理器(preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_pER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,2)懂得预处理器将为你计算常数表达式的'值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。

3) 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。

嵌入式C语言面试题(二)

嵌入式C语言面试题(二)

1读程序段,回答问题1.int main(int argc,char*argv[])2.{3.int c=9,d=0;4.c=c++%5;5.d=c;6.printf("d=%d\n",d);7.return0;8.}复制代码a)写出程序输出b)在一个可移植的系统中这种表达式是否存在风险?why?1.#include"stdio.h"2.int a=0;3.int b;4.static char c;5.int main(int argc,char*argv[])6.{7.char d=4;8.static short e;9.a++;10.b=100;11.c=(char)++a;12.e=(++d)++;13.printf("a=%d,b=%d,c=%d,d=%d,e=%d",a,b,c,d,e);14.return0;15.}复制代码a)写出程序输出b)编译器如果安排各个变量(a,b,c,d)在内存中的布局(eg.stack,heap,data section,bss section),最好用图形方式描述。

2中断是嵌入式系统中重要的组成部分,这导致了许多编译开发商提供一种扩展:让标准C 支持中断,产生了一个新的关键字__interrupt。

下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论以下这段代码。

1.__interrupt double compute_area(double radius)2.{3.double area=PI*radius*radius;4.printf("nArea=%f",area);5.return area;6.}复制代码3C/C++基础知识问题a)关键字volatile在编译时有什么含义?并给出三个不同使用场景的例子(可以伪代码或者文字描述)。

嵌入式程序员面试题“C语言”

嵌入式程序员面试题“C语言”

嵌入式面试资料C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。

这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。

从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。

这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢的问题吗?如要你答出某个字符的ASCII值。

这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标志着出题者也许花时间在微机上而不是在嵌入式系统上。

如果上述任何问题的答案是"是"的话,那么我知道我得认真考虑我是否应该去做这份工作。

从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质:最基本的,你能了解应试者C语言的水平。

不管怎么样,看一下这人如何回答他不会的问题也是满有趣。

应试者是以好的直觉做出明智的选择,还是只是瞎蒙呢?当应试者在某个问题上卡住时是找借口呢,还是表现出对问题的真正的好奇心,把这看成学习的机会呢?我发现这些信息与他们的测试成绩一样有用。

有了这些想法,我决定出一些真正针对嵌入式系统的考题,希望这些令人头痛的考题能给正在找工作的人一点帮助。

这些问题都是我这些年实际碰到的。

其中有些题很难,但它们应该都能给你一点启迪。

这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。

为了让你能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为你所用,请自行按你的意思分配分数。

预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。

经典嵌入式工程师面试C语言题目

经典嵌入式工程师面试C语言题目

嵌入式C 语言面试题目汇总(一)一、预处理(Preprocessor )1、用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)年中有多少秒(忽略闰年问题)2、写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。

,这个宏输入两个参数并返回较小的一个。

二、死循环(Infinite loops )3、嵌入式系统中经常要用到无限循环,你怎么样用C 编写死循环呢?编写死循环呢?三、数据声明(Data declarations )4、用变量a 给出下面的定义给出下面的定义a)、一个整型数(An integer )b)、一个指向整型数的指针(、一个指向整型数的指针( A pointer to an integer) c)、一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege )d)、一个有10个整型数的数组(个整型数的数组( An array of 10 integers) e)、 一个有10个指针的数组,该指针是指向一个整型数的。

(An array of 10 pointers to integers )f)、 一个指向有10个整型数数组的指针(个整型数数组的指针( A pointer to an array of 10 integers) g)、 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A A pointer pointer pointer to to to a a function that takes an integer as an argument and returns an integer )h)、 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(个整型数( An An array array array of of of ten ten ten pointers pointers pointers to to to functions functions functions that that that take take take an an an integer integer integer argument argument argument and and and return return return an an integer )5、关键字static 的作用是什么?的作用是什么?1)在函数体,一个被声明为在函数体,一个被声明为静态静态静态的变量在这一函数被的变量在这一函数被的变量在这一函数被调调用过程过程中中维持其值不维持其值不变。

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

1.static有什么用途?(请至少说明两种)1)限制变量的作用域2)设置变量的存储域(堆,主动分配内存也是堆)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。

它是一个本地的全局变量。

3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。

那就是,这个函数被限制在声明它的模块的本地范围内使用。

4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在栈6.堆栈溢出一般是由什么原因导致的?堆栈溢出一般是循环的递归调用导致的,如果使用的大数据结构的局部变量,也可能导致堆栈溢出。


没有回收垃圾资源导致的是内存泄露最后内存耗尽。

20.不能做switch()的参数类型是:switch的参数不能为实型。

(只能是int char)9.写出float x 与“零值”比较的if语句。

if(x<0.000001&&x>-0.000001)3.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?函数名: atol功能: 把字符串转换成长整型数函数的原型: long atol(const char *nptr);程序例:#include <stdlib.h>#include <stdio.h>int main(void){long l;char *str = "98765432";l = atol(lstr);printf("string = %s integer = %ld\n", str, l);return(0);}1.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?c用宏定义,c++用inline8.软件测试都有那些种类?黑盒:针对系统功能的测试白合:测试函数功能,各函数接口9.确定模块的功能和模块的接口是在软件设计的那个阶段完成的?概要设计阶段11.unsignedchar *p1;unsigned long *p2;p1=(unsigned char *)0x801000;p2=(unsigned long *)0x810000;请问p1+5=? ;p2+5=? ;答:p1+5=0x801005 ;p2+5=0x810014 ;1.请问下面程序有什么错误?int a[60][250][1000],i,j,k;for(k=0;k<1000;k++)for(j=0;j<250;j++)for(i=0;i<60;i++)a[i][j][k]=0;把循环语句内外换一下(编译的时候没错,运行的时候出错,但这个数组太大,如果放在栈中,还是会溢出,要作为全局变量)2.#defineMax_CB 500void LmiQueryCSmd(Struct MSgCB * pmsg){unsigned char ucCmdNum;......for(ucCmdNum=0;ucCmdNum<Max_CB;ucCmdNum++){......;}死循环(unsigned char 0 到 255)3.以下是求一个数的平方的程序,请找出错误:#define SQUARE(a)((a)*(a))int a=5;int b;b=SQUARE(a++);//a被加了2次 a=7,b=252、有一个16位的整数,每4位为一个数,写函数求他们的和。

解释:整数1101010110110111和 1101+0101+1011+0111/* n就是16位的数,函数返回它的四个部分之和 */char SumOfQuaters(unsigned short n){charc = 0;inti = 4;do{c += n & 15;n = n >> 4;}while (--i);return c;}3、两个字符串,s,t;把t字符串接到s字符串尾,s字符串有足够的空间存放t字符串void connect(char *s, char *t, int i){char *q = t;char *p =s;if(q ==NULL)return;while(*p!='\0'){p++;}while(*q!=0){*p=*q;p++;q++;}*p = '\0';}void main(){charp[7]="ABC"; charp2[]="EFG"; connect(p,p2,3); printf("%s",p);}4、分析下面的代码:char*a = "hello"; char*b = "hello"; if(a==b)printf("YES"); elseprintf("NO");常量字符串。

位于静态存储区,它在程序生命期内恒定不变。

如果编译器优化的话,会有可能a和b同时指向同一个hello的。

则地址相同。

如果编译器没有优化,那么就是两个不同的地址,则不同。

对VC,是相同。

5、局部变量能否和全局变量重名?答:能,局部会屏蔽全局。

要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。

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

2、如何引用一个已经定义过的全局变量?答:extern 例如在某个.cpp中定义了一个全局变量int a,可在头文件中加入extern a;然后在需要引用的文件中包含该头文件。

或者直接在文件中加入externa;3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以在头文件中用static来定义同名全局变量。

另外某个.C文件中定义的非静态全局变量,可以在其头文件中用extern声明,需引用此全局变量的其他.C只需包含此头文件即可。

4、请写出下列代码的输出内容#include <stdio.h>intmain(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,1205、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。

全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。

这两者在存储方式上并无不同。

这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。

而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。

由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

2) 从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。

把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。

3) static函数与普通函数作用域不同,仅在本文件。

只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。

对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件综上所述:static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝6、设有以下说明和定义:typedef union{long i;int k[5];//20char c;} DATE;struct data{int cat; //4DATE cow; //20double dog;//8}too;DATE max;则语句 printf("%d",sizeof(struct data)+sizeof(max));的执行结果是:考点:区别struct与union.(一般假定在32位机器上)答:DATE是一个union, 变量公用空间.里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20. data是一个struct,每个变量分开占用空间. 依次为int4 + DATE20 +double8 = 32. 所以结果是 20 + 32 = 52.10、请找出下面代码中的所有错误 (题目不错,值得一看)说明:以下代码是把一个字符串倒序,如“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;}答:方法1:一共有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;}方法2: (方法一需要额外的存储空间,效率不高.) 不错的想法#include <stdio.h>#include <string.h>main(){charstr[]="hello,world";intlen=strlen(str);char t;for(int i=0;i<len/2; i++){t=str[i];str[i]=str[len-i-1];//小心一点str[len-i-1]=t;}printf("%s",str);return 0;}3.Heap与stack的差别。

相关文档
最新文档