hsk123456 发表于 2020-3-24 01:48:52

菜鸟求助!

1、程序输不出stu.name

#include<stdio.h>
struct student
{
   int number;
   char *name;
}stu={1,"we",2,"are"};
void main()
{
          int i;
          for(i=0;i<2;i++)
          {
           scanf("%d %s",&stu.number,&stu.name);
          }
printf("%s",stu.name);

}

2、然后我认为stu.name已经表示为地址了,就把&去掉,结果只能输入一组数据,第二组数据无法输入

以上两个问题是为什么呢?请大佬指教!!!

人造人 发表于 2020-3-24 02:37:44

#include <stdio.h>

struct student
{
   int number;
   char name;
} stu;

int main(void)
{
        int i;
        for(i = 0; i < 2; i++)
        {
                scanf("%d %s", &stu.number, stu.name);
        }
        printf("%s", stu.name);
        return 0;
}

人造人 发表于 2020-3-24 02:39:12

#include <stdio.h>
#include <stdlib.h>

struct student
{
        int number;
        char *name;
} stu;

int main(void)
{
        int i;
        for(i = 0; i < 2; i++)
        {
                stu.name = malloc(100);
                scanf("%d %s", &stu.number, stu.name);
        }
        printf("%s", stu.name);
        return 0;
}

hsk123456 发表于 2020-3-24 17:02:42

人造人 发表于 2020-3-24 02:39


加了stu.name = malloc(100);这语句之后报错耶

hsk123456 发表于 2020-3-24 17:06:27

人造人 发表于 2020-3-24 02:37


为什么char *name不行呢?

人造人 发表于 2020-3-24 17:23:42

hsk123456 发表于 2020-3-24 17:06
为什么char *name不行呢?

这个指针指向哪里?

hsk123456 发表于 2020-3-24 18:00:14

人造人 发表于 2020-3-24 17:23
这个指针指向哪里?

我想通过stu.name输入一个字符串,是因为指针变量name没确切的指向,所以无法输入吗?

人造人 发表于 2020-3-24 18:01:42

hsk123456 发表于 2020-3-24 18:00
我想通过stu.name输入一个字符串,是因为指针变量name没确切的指向,所以无法输入吗?

hsk123456 发表于 2020-3-24 18:08:13

人造人 发表于 2020-3-24 18:01


那要怎样才能使用这个指针呢?{:10_269:}

人造人 发表于 2020-3-24 18:16:16

hsk123456 发表于 2020-3-24 18:08
那要怎样才能使用这个指针呢?

让它指向可用的内存位置

hsk123456 发表于 2020-3-24 23:58:20

人造人 发表于 2020-3-24 18:16
让它指向可用的内存位置

ok!谢谢啦!!!
页: [1]
查看完整版本: 菜鸟求助!