首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要打印第二和第三数组的数组元素的内存位置?

为什么要打印第二和第三数组的数组元素的内存位置?
EN

Stack Overflow用户
提问于 2022-11-26 15:59:47
回答 2查看 20关注 0票数 0
代码语言:javascript
复制
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跳下来)

EN

回答 2

Stack Overflow用户

发布于 2022-11-26 16:08:57

因为你宣布你的数组错了。

代码语言:javascript
复制
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};
票数 0
EN

Stack Overflow用户

发布于 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数组。要做到这一点,请更改定义:

代码语言:javascript
复制
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,而不是指针。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74583639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档