⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_21596.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:21596 发表者:robbe 发表日期:2002-11-19 04:04:45
<br>主题:关于指针和数组的区别
<br>内容:有下面的一个小程序:<BR>#include&lt;stdio.h&gt;<BR>#include&lt;string.h&gt;<BR><BR>int main(void){<BR>&nbsp;&nbsp; char s1[6] = "hello";<BR>&nbsp;&nbsp; char s2[] = "hello";<BR><BR>&nbsp;&nbsp; char *s3 = "hello";<BR>&nbsp;&nbsp; strcpy(s1, "AAAAA"); //正确<BR>&nbsp;&nbsp; strcpy(s2, "BBBBB"); //正确<BR>&nbsp;&nbsp; strcpy(s3, "CCCCC"); //???<BR>&nbsp;&nbsp; printf("%s %s %s\n", s1, s2, s3);<BR>&nbsp;&nbsp; return 0;<BR>}<BR>我的疑问是,s1,s2,s3都市指针,为是么s3不能字符串拷贝,其他两个数组形式的就可以了,我把*s3改成s3[]就可以编译了.为什么?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:树爱兵 回复日期:2002-11-19 08:12:38
<br>内容:strcpy(s3, "CCCCC");中的s3在数组只相当于s3[0],即为头指针,当然不好附值!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Tonni 回复日期:2002-11-19 08:31:12
<br>内容:char s1[6] = "hello";与char s2[] = "hello";是等效的,都是有初值的数组,<BR>而 char *s3 = "hello"; 中的s3是指向const 常量的指针,当然不能拷贝了!<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:PLB 回复日期:2002-11-19 09:20:58
<br>内容:c++规定:<BR>如果形式如此:char *p = "******";<BR>就把p转化const char * 类型,<BR>这一点违反了c++的规则,纯是为了兼容C的使用习惯,可以说是c++的缺点之一<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:未出手的飞刀 回复日期:2002-11-19 09:28:35
<br>内容:<BR>这是由编译器的实现决定,<BR>char *s3 = "hello";是编译器为你分配了一块存放字符串的固定内存,并将指针指向它,非常遗憾的是,这块内存的内容不能由你改变。<BR>而char[]是你自己分配的内存,当然可以改变。<BR>所以,你的strcpy在第3个调用崩溃。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:gws 回复日期:2002-11-19 16:03:06
<br>内容:你用的是什么编译器啊?<BR>我用的是tc2.0英文版,作为.c和.cpp都可以编译<BR>结果也正确可以正确进行copy啊?<BR>指针与数组在功能上本是十分象似的,数组的名称就是指针<BR>一个字符串指针只要定义不是用const定义的,都可以当作字符串进行各种操作(目标串的内存不能少于源串)!<BR>#include "stdio.h"<BR>#include "string.h"<BR>int main()<BR>{ char *s="hello";<BR>&nbsp;&nbsp;strcpy(s,"ccccc");<BR>&nbsp;&nbsp;printf("%s\n",s);<BR>&nbsp;&nbsp;return 0;<BR>}<BR>2002-11-19 16:14:55

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -