char model[10][15] = {"Honda","Audi","Ferrari","Jeep","Toyota","Bugatti","Ford","Jensen","Porsche","Suzuki"};
int price[10][15] = {750000,650000,950000,300000,900000,1000000,400000,750000,300000,800000};
int remain[10][15] = {3,4,5,3,3,7,8,2,1,2,2};
for(i=0;i<11;i++){
printf("\n%s\t %d\t %d\t",model[i],price[i],remain[i]);
}我试过各种各样的东西,但都没有用.我是一个新的C程序员(刚从JAVA跳下来)
发布于 2022-11-26 16:08:57
因为你宣布你的数组错了。
char *model[11] = {"Honda","Audi","Ferrari","Jeep","Toyota","Bugatti","Ford","Jensen","Porsche","Suzuki"};
int price[11] = {750000,650000,950000,300000,900000,1000000,400000,750000,300000,800000,9000};
int remain[11] = {3,4,5,3,3,7,8,2,1,2,2};发布于 2022-11-26 16:10:26
model是一个由10个15 char的数组组成的数组。
因此,model[i]是这10个数组之一;它是一个15 char的数组。
当数组在表达式中被用作sizeof或一元&的操作数或用于初始化数组的字符串文字时,它将自动转换为指向其第一个元素的指针。因此,使用model[i]作为参数给printf传递指向数组model[i]的第一个元素的指针。
使用%s时,printf需要一个指向char的指针,并打印从内存中该位置开始的字符串。因此,传递model[i]传递一个指针,该指针与%s一起工作。
price是一个由10个15 int的数组组成的数组。
因此,price[i]是这10个数组之一;它是一个15 int的数组。
将price[i]传递给printf传递指向数组price[i]的第一个元素的指针。
使用%d时,printf需要一个int值,而不是指针,因此传递price[i]不起作用。
相反,您希望price是一个10 int的数组。那么price[i]将是一个int,而不是一个int数组。要做到这一点,请更改定义:
int price[10] = {750000,650000,950000,300000,900000,1000000,400000,750000,300000,800000};
int remain[10] = {3,4,5,3,3,7,8,2,1,2,2};然后将price[i]传递给printf将传递一个int,而不是指针。
https://stackoverflow.com/questions/74583639
复制相似问题