结构体接收变量的问题求助!!
//插入数字,并按照从小大排列#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;
}
蓝色标记的位置出错,麻烦大佬给看看为什么这样 printf("", 变量名)
scanf("", 地址)
scanf("%d", &num->num_);//此处报错!!!!!写入位置冲突 scanf("", 地址)也就是scanf("", &变量名) ba21 发表于 2019-8-7 13:33
printf("", 变量名)
scanf("", 地址)
scanf("%d", &num->num_);//此处报错!!!!!写入位置冲突
我形参num是指针啊 AmosAlbert 发表于 2019-8-7 16:21
scanf("", 地址)也就是scanf("", &变量名)
我的形参num是指针 不用取地址的 月无涯 发表于 2019-8-7 16:41
我的形参num是指针 不用取地址的
形参是指针 不用取地址?
谁说的?
人造人 发表于 2019-8-7 18:10
形参是指针 不用取地址?
谁说的?
额 它这个指针不是指向结构体的地址吗。。为啥还取地址啊 月无涯 发表于 2019-8-7 18:24
额 它这个指针不是指向结构体的地址吗。。为啥还取地址啊
形参num是指针没错,可这不代表num->num_也是指针,懂了么.回头再好好有关结构体和指针的知识!
num是指针
num->num_相当于(*num).num_而在你的结构体
struct Arr //定义结构体
{
int num_;//存放数字
struct Arr* next;//指向下一个
};之中num_是个整形变量,这也就导致num->num_也是个整形变量,因此使用scanf给他赋值必须取地址,Are you ok(雷军)?
要写成scanf("%d", &num->num_); ba21 发表于 2019-8-7 13:33
printf("", 变量名)
scanf("", 地址)
scanf("%d", &num->num_);//此处报错!!!!!写入位置冲突
我知道了 我以为我传的是个数组感谢! AmosAlbert 发表于 2019-8-7 16:21
scanf("", 地址)也就是scanf("", &变量名)
我知道了 我以为我传的是个数组感谢! bin554385863 发表于 2019-8-7 18:36
形参num是指针没错,可这不代表num->num_也是指针,懂了么.回头再好好有关结构体和指针的知识!
num是指针
...
我知道了 我以为我传的是个整型数组感谢! 人造人 发表于 2019-8-7 18:10
形参是指针 不用取地址?
谁说的?
我知道了 我以为我传的是个数组感谢! 月无涯 发表于 2019-8-7 18:40
我知道了 我以为我传的是个数组感谢!
没事,这种错误犯一次就记住了{:10_256:}
页:
[1]