鱼C论坛

 找回密码
 立即注册
查看: 1443|回复: 12

[已解决]结构体接收变量的问题求助!!

[复制链接]
发表于 2019-8-7 13:17:34 | 显示全部楼层 |阅读模式
5鱼币
//插入数字,并按照从小大排列
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct Arr //定义结构体
{
        int num_;//存放数字
        struct Arr* next;//指向下一个
};

void getInput(struct Arr* num);//接收数字
void getInput(struct Arr* num)
{
        printf("请输入整数:");
        scanf("%d", num->num_);//此处报错!!!!!写入位置冲突
}

struct Arr* search(struct Arr* nums, int target);//寻找插入位置
struct Arr* search(struct Arr* nums, int target)
{
        struct Arr* num;
        num = nums;

        while (num->next != NULL && num->next->num_ < target)
        {
                num = num->next;
        }

        return num;
}

void insert(struct Arr** nums);//插入新结构体
void insert(struct Arr** nums)
{
        struct Arr* num, * temp;

        num = (struct Arr*)malloc(sizeof(struct Arr));//新结构体分配内存空间
        if (num == NULL)
        {
                printf("内存分配失败!");
                exit(1);
        }

        getInput(num);//新结构体接收数字

        if (*nums != NULL)//插入
        {
                temp = search(*nums, num->num_);
                num->next = temp->next;
                temp->next = num;
        }
        else
        {
                *nums = num;
                num->next = NULL;
        }
}

void printNum(struct Arr* nums);//打印
void printNum(struct Arr* nums)
{
        struct Arr* num;
        num = nums;

        while (num != NULL)
        {
                printf("%d\n", num->num_);
                num = num->next;
        }
}

int main()
{
        struct Arr* nums = NULL;
       
        insert(&nums);
       
        printNum(nums);

        return 0;
}

蓝色标记的位置出错,麻烦大佬给看看为什么这样
最佳答案
2019-8-7 13:17:35
printf("", 变量名)
scanf("", 地址)
scanf("%d", &num->num_);//此处报错!!!!!写入位置冲突

最佳答案

查看完整内容

printf("", 变量名) scanf("", 地址) scanf("%d", &num->num_);//此处报错!!!!!写入位置冲突
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-7 13:17:35 | 显示全部楼层    本楼为最佳答案   
printf("", 变量名)
scanf("", 地址)
scanf("%d", &num->num_);//此处报错!!!!!写入位置冲突
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-7 16:21:11 | 显示全部楼层
scanf("", 地址)也就是scanf("", &变量名)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-8-7 16:40:46 | 显示全部楼层
ba21 发表于 2019-8-7 13:33
printf("", 变量名)
scanf("", 地址)
scanf("%d", &num->num_);//此处报错!!!!!写入位置冲突

我形参num是指针啊  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-8-7 16:41:27 | 显示全部楼层
AmosAlbert 发表于 2019-8-7 16:21
scanf("", 地址)也就是scanf("", &变量名)

我的形参num是指针 不用取地址的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-7 18:10:33 | 显示全部楼层
月无涯 发表于 2019-8-7 16:41
我的形参num是指针 不用取地址的

形参是指针 不用取地址?
谁说的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-8-7 18:24:39 | 显示全部楼层
人造人 发表于 2019-8-7 18:10
形参是指针 不用取地址?
谁说的?

额 它这个指针不是指向结构体的地址吗。。为啥还取地址啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-7 18:36:17 | 显示全部楼层
月无涯 发表于 2019-8-7 18:24
额 它这个指针不是指向结构体的地址吗。。为啥还取地址啊

形参num是指针没错,可这不代表num->num_也是指针,懂了么.回头再好好有关结构体和指针的知识!
num是指针
num->num_相当于(*num).num_而在你的结构体
  1. struct Arr //定义结构体
  2. {
  3.         int num_;//存放数字
  4.         struct Arr* next;//指向下一个
  5. };
复制代码
之中num_是个整形变量,这也就导致num->num_也是个整形变量,因此使用scanf给他赋值必须取地址,Are you ok(雷军)?
要写成scanf("%d", &num->num_);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-8-7 18:37:41 | 显示全部楼层
ba21 发表于 2019-8-7 13:33
printf("", 变量名)
scanf("", 地址)
scanf("%d", &num->num_);//此处报错!!!!!写入位置冲突

我知道了 我以为我传的是个数组  感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-8-7 18:38:26 | 显示全部楼层
AmosAlbert 发表于 2019-8-7 16:21
scanf("", 地址)也就是scanf("", &变量名)

我知道了 我以为我传的是个数组  感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-8-7 18:39:11 | 显示全部楼层
bin554385863 发表于 2019-8-7 18:36
形参num是指针没错,可这不代表num->num_也是指针,懂了么.回头再好好有关结构体和指针的知识!
num是指针
...

我知道了 我以为我传的是个整型数组  感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-8-7 18:40:04 | 显示全部楼层
人造人 发表于 2019-8-7 18:10
形参是指针 不用取地址?
谁说的?

我知道了 我以为我传的是个数组  感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-8-7 18:44:27 | 显示全部楼层
月无涯 发表于 2019-8-7 18:40
我知道了 我以为我传的是个数组  感谢!

没事,这种错误犯一次就记住了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-21 23:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表