燕燕燕燕燕燕燕燕燕 2022-03-08 11:13 采纳率: 90.9%
浏览 13

函数中的地址传递,我感觉应该可以改变p的值啊

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stu
{
char name;
char g;
int score;
}STU;
void f(char p)
{
p=(char
)malloc(10);
strcpy(p,"qian");
}
void main()
{
struct stu a={NULL,'m',290},b;
a.name=(char
)malloc(10);
strcpy(a.name,"zhao");
b=a;
f(b.name);
b.g='f';
b.score=350;

printf("%s%c%d\n",a.name,a.g,a.score);
printf("%s%c%d",b.name,b.g,b.score);

}
为什么a.name和b.name输出都是zhao,在f函数中不是改变了吗?

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-03-08 13:11
    关注

    void f(char* p)函数形参只是值传递,修改如下,供参考:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <malloc.h>
    struct stu
    {
        char* name;
        char g;
        int score;
    };
    void f(char** p) //修改
    {
        (*p) = (char*)malloc(10);
        strcpy((*p), "qian");
    }
    void main()
    {
        struct stu a = { NULL,'m',290 }, b;
        a.name = (char*)malloc(10);
        strcpy(a.name, "zhao");
        b = a;
        f(&b.name);  //修改
        b.g = 'f';
        b.score = 350;
        printf("%s %c %d\n", a.name, a.g, a.score);
        printf("%s %c %d", b.name, b.g, b.score);
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月8日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址