易截截图软件、单文件、免安装、纯绿色、仅160KB

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


相关文档:

50个c/c++源代码网站

C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建议,以进一步加强这方面的清单。 1、http://snippets.dzone.com/tag/c/ --数以千计 ......

c/c++预处理指令总结

常见的预处理功能:    预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替换,最常见的预处理有:文件包含,条件编译、布局控制和宏替换4种。
    文件包含:#include 是一种最为常见的预处理,主要是做为文件的引用组合源程序正文。
    条件编译:#if,#ifndef,#ifdef ......

[转]C/C++资源大汇总(很好很强大)

1.开发工具下载
TUBER C                     http://www.duote.com/soft/392.html
Turbo C 2.0 汉化版             http://www.programfan.com/showdown.asp?id=306
C-Free 4.0             http:/ ......

PHP调用C编程总结(windows)

一.环境的安装
   
    下载安装包,Google上搜索php+apache+sql的安装包并安装。
二.扩展编程
    针对在PHP环境下掉用C编程(c程序编译的dll),主要有以下两种方式。
   
    1.利用ATL构建DLL组件,然后再PHP里面直接调用,调用方法 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号