C语言常见问题

        我最近看了一份文档,叫做《C语言常见问题》,感觉里面有很多知识很基础,但就是容易弄错!正所谓“不及跬步,无以致千里”,只有打好了基础才会有所突破。基础是水,没有它鱼儿活不了;基础是山,没有它树木长不了;基础是云,没有它大雨下不了。

 

    从这份文档中,我提取了比较重要的内容,在此与大家分享!

 

  1. 在C语言中,有一个“流”的概念;流可以分为两种类型:文本流(文件)和二进制流(文件);文本流是解释性的,最长可达255个字符;二进制流是非解释性的,一次处理一个字符。
  2. 在用C语言编程的时候,我们都是用#include指令包含类型为".h"的文件,那么可以用该指令包含类型不为".h"的文件吗?答案是:可以。我也是刚才看到这个的。
  3. 在C语言中,我们经常使用宏;那么编程的时候,是使用宏更好,还是使用函数更好?一般来说,应该用宏去替换小的、可重复的代码段,这样可以使得程序得运行速度更快;当任务比较复杂,需要多行代码才能实现时,或要求程序越小越好时,就应该使用函数。
  4. 串拷贝(strcpy)和内存拷贝(memcpy)有什么不同?strcpy()函数只能拷贝字符串,而memcpy()函数可以拷贝任意类型的数据。在C语言中,可以用itoa()函数将整数转换为字符串,用atoi()函数将字符串转换为整数。
  5. 在指针运算中,我们要区分“空指针”和“void指针”:空指针的值是NULL,它并不指向任何对象;而void指针一般被称为通用指针或泛指针,它指向某个对象,但该对象不属于任何类型。
  6. 在什么时候使用“空指针”?1)用空指针终止对递归数据结构的间接引用;2)用空指针作函数调用失败时的返回值;3)用空指针作警戒值;在什么时候使用void指针?当进行纯粹的内存操作时,或者传递一个指向未定类型的指针时,可以使用void指针。
  7. NULL总是被定义为0吗?NULL不是被定义为0,就是被定义为(void*)0,这两种值几乎是相同的;NULL总是等于0吗?如果指“与0比较的结果为相等”,那么确实是等于0;如果指“其存储方式和整型值0相同”,那么答案是“不”,NULL并不必须被存为一个整型值0。
  8. 用指针作if语句的条件表达式意味着什么?当把一个指针作为条件表达式时,所要判断的条件实际上就是“该指针是否为一空指针”;两个指针是不能相加的。
  9. 在C语言中,用void关键字说明的函数是没有返回值的,并且也没有必要加入return语句;在有些情况下,一个函数可能会引起严重的错误,并且要求立即退出该函数,这时就应该加入一个return语句,以跳过函数体内还未执行的代码。
  10. exit()和return有什么不同?用exit()函数可以退出程序并将控制权返回给操作系统,而用return语句可以从一个函数中返回并将控制权返回给调用该函数的函数。
  11. 数组的下标总是从0开始吗?是的;可以使用数组后面第一个元素的地址吗?可以使用数组后面第一个元素的地址,但不可以查看该地址中的值。
  12. array_name和&array_name有什么不同?前者是指向数组中第一个元素的指针,后者是指向整个数组的指针。
  13. 为什么应该使用标准库函数而不使用自己编写函数?标准库函数有三点好处:准确性、高效性和可移植性。
  14. 什么是“局部环境(local)”?局部环境是对特定环境下程序要遵循的特定规则的一种描述,它对程序的国际化很有帮助。 
时间: 2024-09-15 01:47:54

C语言常见问题的相关文章

C 语言基础教程(我的C之旅开始了)[九]_C 语言

24. +.-.*./.= 的优先级 1. 优先级     和数学一样,C 语言规定先乘除后加减.也就是说,乘法运算符和除法运算符的优先级(Precedence)比加法运算符和减法运算符高.同时,C 语言也规定,如果两个运算符的优先级相同,并且它们之间没有被优先级比它们高或者低的运算符隔开,则它们的运算顺序根据它们在语句中出现的先后而定.大多数运算符都是从左向右进行运算的,不过也有从右向左进行运算的(例如赋值运算符).乘法运算符和除法运算符的优先级相同,加法运算符和减法运算符的优先级相同.因此,

github优质图书

免费优质书籍集 关于它的介绍 原资源克隆自 stackoverflow - 免费可用的学习资源列表 作者: George Stocker. 此学习资源清单由Victor Felder整理到GitHub ,并更新和维护. 该学习资源清单逐渐成为Github 最受欢迎的仓库, 并且有超过 80,000+标星, 4000+次提交, 800+贡献者参与它的修改, 以及20,000+复制. 现在由Free Ebook Foundation回购管理, Free Ebook Foundation是一个非营利性

《Java语言导学(原书第6版)》一1.4 常见问题(及其解决方案)

1.4 常见问题(及其解决方案) 1.4.1 编译器问题 该错误消息说明Windows系统没有找到编译器(javac).有一个办法可以解决该问题.假设JDK安装在目录C:\jdk 1.8.0下.在提示符下输入下述命令并按回车键: 这样设置后,每次编译或运行程序时,都要执行命令C:\jdk1.8.0\bin\javac或C:\jdk1.8.0\bin\java.更新PATH变量可避免这种重复输入,详情参考<JDK 8安装指南>. 该错误消息说明编译时忘记输入.java后缀.切记,编译命令是jav

《Java语言导学(原书第6版)》一一1.4 常见问题(及其解决方案)

1.4 常见问题(及其解决方案)1.4.1 编译器问题 1.?Microsoft Windows系统的常见错误消息 该错误消息说明Windows系统没有找到编译器(javac).有一个办法可以解决该问题.假设JDK安装在目录C:\jdk 1.8.0下.在提示符下输入下述命令并按回车键: 这样设置后,每次编译或运行程序时,都要执行命令C:\jdk1.8.0\bin\javac或C:\jdk1.8.0\bin\java.更新PATH变量可避免这种重复输入,详情参考<JDK 8安装指南>. 该错误消

C语言初学者常见问题与错误

下面的程序,基本是摘自在CSDN,BCCN,百度知道的提问帖,以及我身边的人和我自己写的程序,限于篇幅,对于问题影响不大的部分我已经删去或改写,一些与相应问题无关的错误也一并进行了修改.对于完整的修正后的程序都在code::blocks 10.05(编译器gcc,调试器gdb,平台windows 7旗舰版)上运行过. 1.程序画面一闪而过 #include int main(void) { int iSignal; /*定义变量表示信号灯的状态*/ printf("the Red Light i

艾伟_转载:C#语言基础常见问题汇总

概述 1.什么是C#? C#是Microsoft公司设计的一种编程语言.它松散地基于C/C++,并且有很多方面和Java类似. Microsoft是这样描述C#的:"C#是从C和C++派生来的一种简单.现代.面向对象和类型安全的编程语言.C#(读做'Csharp')主要是从C/C++编程语言家族移植过来的,C和C++的程序员会马上熟悉它.C#试图结合Visual Basic的快速开发能力和C++的强大灵活的能力." 2.如何开发C#应用程序? .NET SDK包括了C#命令行编译器(c

C#语言基础常见问题汇总

概述 1.什么是C#? C#是Microsoft公司设计的一种编程语言.它松散地基于C/C++,并且有很多方面和Java类似. Microsoft是这样描述C#的:"C#是从C和C++派生来的一种简单.现代.面向对象和类型安全的编程语言.C#(读做'Csharp')主要是从C/C++编程语言家族移植过来的,C和C++的程序员会马上熟悉它.C#试图结合Visual Basic的快速开发能力和C++的强大灵活的能力." 2.如何开发C#应用程序? .NET SDK包括了C#命令行编译器(c

Win7/Win8.1免费升级Win10正式版常见问题汇总解答

  今天,微软宣布Windows 10正式版将于7月29日发布,届时正版Win7和Win8.1用户可免费升级到Win10.与此同时,微软官网也迎来了改版,并回答了一些Windows 10免费升级相关的问题,下面小编就为大家带来Win7/Win8.1免费升级Win10正式版常见问题汇总解答,具体如下. Win10何时推出? Win10将于2015年7月29日发布. 预订Win10免费升级版有何意义? 我们将在有限时间内为符合条件的Windows7 SP1.Windows 8.1更新和Windows

IIS常见问题及解答以及故障分析

解决以下常见问题:1. 我怎样对IIS设置进行备份?  2. 什么工具能帮助我施加一个负载并进行应用程序的强度测试? 3. 当Localstart.asp返回了一个"正在创建中"响应时,发生了什么事情? 4. 能在Microsoft Windows XP Home Edition中安装IIS或PWS吗? 5. ISAPI筛选器能在一个单独的进程空间中运行吗? 6. 我在哪能获得这样的示例代码--它显示了如何在使用WebDAV的ASP中编辑文档?7. 当我试图用ASP去访问一个数据库时,