为啥不能用赋值语句将一个字符串常量直接赋给一个字符数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥不能用赋值语句将一个字符串常量直接赋给一个字符数组相关的知识,希望对你有一定的参考价值。
因为字符数组是一个特殊的固定地址,是一个常量指针,所以不能对它赋值 参考技术A 不能直接赋值,这是一定的,因为有太多的不确定性,容易发生错误赋值可以使用strcpy函数,strncpy函数,或者sprintf函数都行,直接等于是不行的~~~~ 参考技术B 规定不能整体引用,只能单个引用
赋值除了按字符串输入赋给字符数组,或者初始化为字符串外,一般只能单个元素赋值
数组名是一个地址常量,不允许改变,但是数组中的元素是变量,可以改变赋值(数组名这个地址[常量]就是元素[变量]的存放位置)
a[]是一个常量,但是a[0]是一个变量
c++程序 我为啥不能将string类的变量赋给char数组,我按书上打的?
#include<iostream>#include<string>using namespace std;class Studentpublic: Student(int n, string nam, char s) num = n; name = nam;//这里报错 sex = s; cout << "C called" << endl; ~Student() cout << "D called" << endl; void display() cout << "num:" << num << endl; cout << "name:" << name << endl; cout << "sex" << sex << endl; private: int num; char name[10]; char sex;;int main() Student studl(10010, "wang_li", 'f'); studl.display(); Student stud2(10011, "zhang_fang", 'm'); stud2.display(); system("pause"); return 0;
name = nam; //这里报错因为nam 是 string class (中文叫 “类”), 不是简单的变量。
name 是 char 数组,是简单的变量。不能用赋值语句传递。
(char数组之间 传递,也不能用赋值语句,何况现在是 class 到 char数组!)
如果 nam 和 name它们在同一定义域时,可以这样传递 它们含的字符串:
strcpy (name, nam.c_str());,
当然要注意: name的存放空间要足够,即必须长于 nam.c_str() 的字符串长度。 参考技术A 可能:
1、书有问题
2、你抄错了
改正方法:使用strcpy()
以上是关于为啥不能用赋值语句将一个字符串常量直接赋给一个字符数组的主要内容,如果未能解决你的问题,请参考以下文章