C 面试题之找错题
找错题
试题1:
void test1()
{
char string[10];
char* str1 = "0123456789";
strcpy( string, str1 );
}
试题2:
void test2()
{
char string[10], str1[10];
int i;
for(i=0; i<10; i++)
{
str1[i] = 'a';
}
strcpy( string, str1 );
}
试题3:
void test3(char* str1)
{
char string[10];
if( strlen( str1 ) <= 10 )
{
strcpy( string, str1 );
}
}
解答:
我对这几道题目的分析如下:
1、 字符串和字符数组char str1[]的异同点:
通过实例说明:string str=”0123456789”; char str1[]={0,1,2,3,4,5,6,7,8,9}
(1) 实际上字符串str也是由一个个的字符构成的,每一个字符都占据一个字节的空间,这一点和字符数组str1是一样的,但是字符串str后面会有一个追加的空字符’\0’来表示字符串的结尾,而字符数组是不用的。图示如下:
str字符串
0
1
2
3
4
5
6
7
8
9
\0
str1字符数组
0
1
2
3
4
5
6
7
8
9
(2) 但是我们在使用strlen()函数,获取字符串或字符数组长度时,都是10,因为在计算字符串长度时,并没有将字符串的最后一个空字符’\0’计算在内,这一点可以参照下面的strlen()函数的具体实现。
2、 关于字符串拷贝函数strcpy():
这个函数需要两个字符指针char*参数,第一个参数表示目的字符串,第二个参数表示源字符串。但是需要注意的就是第二个字符指针必须指向一个字符串,而不能是一个字符数组,因为strcpy()函数具体实现里面有一个for循环,而这个for循环的结束条件就是碰到字符串中的空字符’\0’,如果第二个字符指针指向字符数组的话,将会导致for循环得不到正常结束,从而导致拷贝错误。Strcpy()函数也可参照下面的具体实现代码。
3、 字符串指针char*或称做字符指针的初始化问题(关键要习惯这种初始化格式):
(1) 将char*看作字符串指针,使用字符串初始化:
string str=”12345”;
char* ch=str;//错误,不能将str型赋给char*,因为str是一个string类对象,类型不同不能赋值。
但是,下面的初始化就是正确的:
char
相关文档:
本实例一套人事管理系统:开发工具为VFP9.0、SQL2000、EXCEL;使用了Adobe Photoshop平面设计软件,采用了SPT穿透技术,调用了API函数,实现了对系统时间的统一控制、对DNS的代码控制、对域名解析的应用,等等
晕,怎么上传,(包含源码未编译的)想要的给我发E-MAIL:zhao@tom.com ......
#include <assert.h> //设定插入点
#include <ctype.h> //字符处理
#include <errno.h> //定义错误码
#include <float.h> //浮点数处理
#include <fstream.h> //文件输入/输出
#include <iomanip.h> //参数化输入/输出
#include & ......
Java 2 C++ http://www.javaeye.com/topic/295776
1. 解决性能问题
Java具有平台无关性,这使人们在开发企业级应用的时候总是把它作为主要候选方案之一,但是性能方面的因素又大大削弱了它的竞争力。为此,提高Java的性能就显得十分重要。Sun公司及Java的支持者们为提高Java的运行速度已经做出了许多努力,其中大多数集中 ......
一.环境的安装
下载安装包,Google上搜索php+apache+sql的安装包并安装。
二.扩展编程
针对在PHP环境下掉用C编程(c程序编译的dll),主要有以下两种方式。
1.利用ATL构建DLL组件,然后再PHP里面直接调用,调用方法 ......
// 摘自:Wikipedia.org
C语言的标准文文件要求了一个平台移植C语言的时候至少要实现的一些功能和封装的集合,称为“标准库”,标准库的声明头部通过预处理器命令#include进行引用。
在C89标准中:
01. <assert.h>
02. <ctype.h>
&n ......