C 结构中的指针
我不熟悉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
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)代码>我认为没有理由用指针保存一个整数。