结构体作为函数参数,但是修改后为什么数值不一样

C语言 码拜 9年前 (2016-04-15) 1249次浏览
结构体作为函数参数,但是修改后为什么数值不一样#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stu{
char name[5];
int id;
char sex[10];
};
void test(stu* who){
who->id=23;
*(who)->name=”bhj”;
*(who)->sex=”dkh”;
printf(“%d %s %s\n”,who->id,who->name,who->sex);
}
int main(){
stu s1={“a”,12,”m”};
test(&s1);
return 0;
}
可以帮本人解答一下吗?谢谢高手了
解决方案

10

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stu{
	char name[5];
	int  id;
	char sex[10];
};
void test(struct stu *who){
	who->id=23;
	who->name[0]="b";
	who->name[1]="h";
	who->name[2]="j";
	who->sex[0]="d";
	who->sex[1]="k";
	who->sex[2]="h";
	printf("%d %s %s\n",who->id,who->name,who->sex);
}
int main(){
	stu s1={"a",12,"m"};
	test(&s1);
	return 0;
}

不知道你想要干嘛,只是改的没错了

10

*(who)->

这个代码是什么?
->操作符 的操作对象本身就是对结构体指针,你加个*以后,就是这个结构体的第一个元素的地址的内容了
也就是name[0]了(可能说得不大准确,大致就是这个意思了),反正就是语法已经乱了
所以才会报错“无法从 const char [4] 转换成 char”

20

字符串拷贝用strcpy

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stu{
	char name[5];
	int id;
	char sex[10];
};
void test(stu* who){
	who->id=23;
	strcpy(who->name, "bhj");
	strcpy(who->sex, "dkh");
	printf("%d %s %s\n",who->id,who->name,who->sex);
}
int main(){
	stu s1={"a",12,"m"};
	test(&s1);
	return 0;
}

10

哦 把字符当作字符串输出,是严重的错误

*(who)-> name ////这里的 优先级运算符 () 不起任何作用,纯属骗人的
===>* who -> name 
==>*(who->name)

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明结构体作为函数参数,但是修改后为什么数值不一样
喜欢 (0)
[1034331897@qq.com]
分享 (0)