字符数组赋值的问题
voidmain(){structstu{intnum;charname【20】;}}student;student.num=100;student.name=strcp...
void main(){
struct stu {
int num;
char name【20】;
}
}student;
student.num = 100;
student.name = strcpy(student.num,“zhoujielun”);
我想问的是,为什么下面的字符数组不可以像上面的整形一样赋值,非得要用strcpy呢!如果可以,举个例子。
还有,char name[20] 是字符数组,给其初始化值的时候应该是{‘z’,‘y’,‘x’},为什么可以一次性入力{“zhoujielun”},这不是字符串么?字符不是单引号么?举些例子吧!好的双倍给分!谢谢! 展开
struct stu {
int num;
char name【20】;
}
}student;
student.num = 100;
student.name = strcpy(student.num,“zhoujielun”);
我想问的是,为什么下面的字符数组不可以像上面的整形一样赋值,非得要用strcpy呢!如果可以,举个例子。
还有,char name[20] 是字符数组,给其初始化值的时候应该是{‘z’,‘y’,‘x’},为什么可以一次性入力{“zhoujielun”},这不是字符串么?字符不是单引号么?举些例子吧!好的双倍给分!谢谢! 展开
6个回答
展开全部
1,第一个问题:strcpy
对于数组来说,可以在定义的时候进行初始化直接赋值的,如
struct stu student = {100,"zhoujielun"};
如果是先定义,再赋值就不行了,因为定义同时初始化是在编译阶落进行的。
而随后的赋值是在运行期间,只能用函数进行字符串的copy才行。
2,
char name[20] = {'z','y','x'};
和
char name[20] = "zhoujielun";
是一样的,只不过前者是一个字符一个字符的进行初始化;后者是近字符串进行。它们都是在定义的时候进行初始赋值的。
【字符串都是以双引号进行表示的】
strcpy(student.num,“zhoujielun”);
对于数组来说,可以在定义的时候进行初始化直接赋值的,如
struct stu student = {100,"zhoujielun"};
如果是先定义,再赋值就不行了,因为定义同时初始化是在编译阶落进行的。
而随后的赋值是在运行期间,只能用函数进行字符串的copy才行。
2,
char name[20] = {'z','y','x'};
和
char name[20] = "zhoujielun";
是一样的,只不过前者是一个字符一个字符的进行初始化;后者是近字符串进行。它们都是在定义的时候进行初始赋值的。
【字符串都是以双引号进行表示的】
strcpy(student.num,“zhoujielun”);
展开全部
name是一个数组,指向一块大小为20*sizeof(char)内存,用来存储字符,这里name是一个静态的,长度不可变的数组,不是一个通常意义上的指针,换句话说,这个指针只能指向这块大小为20*sizeof(char)的内存,这个地方name不能被赋值,则必须使用strcpy把后面的字符串中的字符一个一个复制到数组中
C\C++中通常意义上表示字符串是使用的字符数组,C\C++中的字符串是一串以'\0'为标识符的char型数组,例如,char * p = "abcdefg",那么p指向一串不可修改的char型数组,char s[20] = “abcdefg”相当于以下赋值:
char s[20] = {'a','b','c','d','e','f','g','\0'};
那么使用printf对p和s进行输出时(printf(p);printf(s))效果一样
只需记住C\C++中没有字符串这一独立的数据类型,字符串时使用字符数组进行表示的即可
C\C++中通常意义上表示字符串是使用的字符数组,C\C++中的字符串是一串以'\0'为标识符的char型数组,例如,char * p = "abcdefg",那么p指向一串不可修改的char型数组,char s[20] = “abcdefg”相当于以下赋值:
char s[20] = {'a','b','c','d','e','f','g','\0'};
那么使用printf对p和s进行输出时(printf(p);printf(s))效果一样
只需记住C\C++中没有字符串这一独立的数据类型,字符串时使用字符数组进行表示的即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
赋值可以直接student.name =“zhoujie”,这个函数是复制函数,是为了方便有时候在一个数组里操作会改变我们不期望的改变,所以复制一个副本。
字符串和字符数组几乎差不多,所以可以char *s="afasfasf",s[]="asfdasf",也可以单个元素赋值
字符串和字符数组几乎差不多,所以可以char *s="afasfasf",s[]="asfdasf",也可以单个元素赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
变量赋值好比提篮子买菜,只要篮子能装下菜,就可以用。(篮子=变量,菜=值)
char
类型只占一个字节
int
占四个字节(32位机)
所以,
len=buff[0];//这个是将字符数组中的第一个字符赋给一个整型变量
len?合理、合法。
char
类型只占一个字节
int
占四个字节(32位机)
所以,
len=buff[0];//这个是将字符数组中的第一个字符赋给一个整型变量
len?合理、合法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
len=buff[0];buff数组初始化后,这样赋值也没什么问题,毕竟整形范围比CHAR范围大。
但是,传给len的值是ASCII码。
但是,传给len的值是ASCII码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询