C++中改变变量的值(char)

来源:百度知道 编辑:UC知道 时间:2024/06/04 10:29:32
我写了一段程序改变int 类型变量的值,运行成功了,程序如下:
#include <iostream.h>
void function_1();
int i=5;
main()
{
function_1();
cout<<i;
}
void function_1()
{
i=3;
}
==================================
于是我又想写一段来改变字符数组类型变量的值,但不成功,
#include <iostream.h>
char name[5] = "mary";
void modify();
main()
{
modify();
cout<<name<<endl;
}
void modify()
{
name[5] = "many";
}
==========
请问这是什么原因?为什么不能用这样的函数改变字符数组的值?
书上说可以用指针传值来改变,但我还是想问一下,上面的方法为什么不能改变name的值?

你搞错了

你那句改用strcpy(buff,"many");就OK
或者用name[0]='m';
name[1]='a';
name[2]='n';
name[3]='y';
name[4]='\0';
这5句

name[i]是一个字符型变量,再说你越界了,安全的用法是name[0-4]

于是我又想写一段来改变字符数组类型变量的值,但不成功,
#include <iostream.h>
char name[5] = "mary"; //定义char型数组时可以直接赋值
void modify();
main()
{
modify();
cout<<name<<endl;
}
void modify()
{
name[5] = "many"; //前边已经把name定义为全局数组变量了,这里name[5]实际等于*(name+5),对,是一个变量,而不是你想像中的数组
}
==========
请问这是什么原因?为什么不能用这样的函数改变字符数组的值?
书上说可以用指针传值来改变,但我还是想问一下,上面的方法为什么不能改变name的值?

=======================================
要解决这个问题,做两处改动,当然我是用c的方法,因为你这程序里也是用的c格式的字符串
头文件多加一个#include <string.h>
然后
void modify()
{
//name[5] = "many";
strcpy(name, "many");
}

strcpy(