C 结构中的指针

C 结构中的指针,c,pointers,struct,scanf,typedef,C,Pointers,Struct,Scanf,Typedef,我不熟悉c语言,我尝试创建一个结构。这就是我的结构 typedef struct car{ int *transmission; int *year; char color[15]; }CAR; 然后我尝试使用下面的代码将值插入到结构变量中 printf("Enter M Year of car : "); scanf("%d",car1.year); printf("Enter color of car : "); scanf("%s",&car1.color

我不熟悉c语言,我尝试创建一个结构。这就是我的结构

typedef struct car{
    int *transmission;
    int *year;
    char color[15];
}CAR;
然后我尝试使用下面的代码将值插入到结构变量中

printf("Enter M Year of car : ");
scanf("%d",car1.year);
printf("Enter color of car : ");
scanf("%s",&car1.color);
printf("Enter transmission type of car (1 for manual & 2 for auto): ");
scanf("%d",car1.transmission); 

但是,它返回一个错误。请帮我解决这个问题

在此结构中,不应该声明指针,而应该声明变量

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

struct car
{
    int transmission;
    int year;
    char color[15];
};

int main()
{
    struct car car1;
    printf("Enter M Year of car: ");
    scanf("%d", &car1.year);

    printf("\nThe year of the car is: %d", car1.year); 

    return 0;
}
#包括
#包括
结构车
{
int传输;
国际年;
炭色[15];
};
int main()
{
结构车car1;
printf(“输入车辆年份:”);
scanf(“%d”和“car1.year”);
printf(“\n车辆年份为:%d”,车辆1.year);
返回0;
}

在此结构中,不应声明指针,而应声明变量

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

struct car
{
    int transmission;
    int year;
    char color[15];
};

int main()
{
    struct car car1;
    printf("Enter M Year of car: ");
    scanf("%d", &car1.year);

    printf("\nThe year of the car is: %d", car1.year); 

    return 0;
}
#包括
#包括
结构车
{
int传输;
国际年;
炭色[15];
};
int main()
{
结构车car1;
printf(“输入车辆年份:”);
scanf(“%d”和“car1.year”);
printf(“\n车辆年份为:%d”,车辆1.year);
返回0;
}

问题在于,您没有使用任何实际int变量的地址初始化结构中的指针,因此它们包含垃圾

另一方面,color变量是指向15个字符中第一个字符的指针,因此不必将其地址传递给scanf(),只需传递其值,函数就可以将读取的字符存储在那里

试着这样做:

int aYear, aTransmission;
CAR car1;

car1.year = &aYear;
car1.transmission = &aTransmission;

printf("Enter M Year of car : ");
scanf("%d",car1.year);
printf("Enter color of car : ");
scanf("%s",car1.color); /* color IS a pointer */
printf("Enter transmission type of car (1 for manual & 2 for auto): ");
scanf("%d",car1.transmission);

这段代码将把值存储到外部变量aYear和aTransmission中,这两个变量由指针指向结构。

问题是,您没有使用任何实际int变量的地址初始化结构中的指针,因此它们包含垃圾

另一方面,color变量是指向15个字符中第一个字符的指针,因此不必将其地址传递给scanf(),只需传递其值,函数就可以将读取的字符存储在那里

试着这样做:

int aYear, aTransmission;
CAR car1;

car1.year = &aYear;
car1.transmission = &aTransmission;

printf("Enter M Year of car : ");
scanf("%d",car1.year);
printf("Enter color of car : ");
scanf("%s",car1.color); /* color IS a pointer */
printf("Enter transmission type of car (1 for manual & 2 for auto): ");
scanf("%d",car1.transmission);
此代码将把值存储到外部变量aYear和aTransmission中,这些变量由指针指向结构。

int*year-->
int year然后
scanf(“%d”、&car1.year)我认为没有理由用指针保存一个整数。
int*year-->
int year然后
scanf(“%d”、&car1.year)我认为没有理由用指针保存一个整数。