字符数组与函数参数的问题

Zephyr 2000-05-02 12:56:00
1、一本C++教科书上说一旦把数组作为参数传递到函数中,则在栈上定义了指针,可以对

该指针进行递增、递减操作。也就是说作为函数参数的数组就是“指针变量”。

而一本C教科书上说C语言规定数组名是指向第0号元素的“常量指针”。

据我所知指针变量的值是可变的,而“常量指针”的值是不可变的。这样一来,岂不是

说C++和C对数组的诠释矛盾?

2、我声明一字符数组时使用如下语句:

char name[];

为什么编译不通过?一定要在一句里面初始化字符数组才行吗?例如写成如下形式:

char name[]="zephyr";

我想从编辑框输入来初始化字符数组,做法是用UpdateData(TRUE)把值从编辑控件传

到变量m_edit1,变量类型是CString,

然后用语句name=m_edit1;给name赋值。但编译不通而且提示说“不能把CString转化

成Char[]”,这是为什么?
...全文
159 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
simon_sun 2000-05-03
  • 打赏
  • 举报
回复
1.当将一个数组作为参数传递时,传递的是该数组第一个元素的地址,在函数内部对于该指针的操作并没有改变你所说的“数组名是指向第0号元素的“常量指针”的指针值,而只是改变了该指针所只向的值的内容,并不矛盾。
2。转换过程如下所示:
char test[10];
CString strTemp("sfsaf");
strcpy(test,strTemp.GetBuffer(strTemp.GetLength()));
strTemp.ReleaseBuffer( );
AfxMessageBox(test);
Sniper 2000-05-02
  • 打赏
  • 举报
回复
1.以char name[]="zephyr"为例,一般不用name++这样的操作,用也只用name+2取到p,用name+3取到h;
2.当然不能这样赋值,就是两个字符串,也不能这样赋值,何况还是CString呢?我一般用sprintf(name, m_edit1)来完成赋值。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧