任何人都可以向我解释为什么我不能打印出数组值
Anyone can explain to me why i cannot printf out the array value?
我开始学习C++代码,我不明白为什么我不能打印出name[j][i]值,任何人都可以教我并向我解释?感谢~
#include <iostream>
#include <string>
using namespace std;
void array_copy(int *p, int *q){
for (int i = 0; i < 10; *q++ = *p++, i++);
}
int main(){
int a[10], b[10];
for (int i = 0; i < 10; a[i] = i + 1, i++);
array_copy(a, b);
for (int i = 0; i < 10; i++) {
char name[2] = {'a', 'b'};
for (int j = 0; j < 2; j++) {
printf("%c[%d] : %dn", name[j], i, name[j][i]);
}
}
return 0;
}
name[j][i]
这里name
不是二维数组。你做错了。
你可以这样做
printf("%c[%d] : %dn", name[j], i, name[j]=='a'?a[i]:b[i]);
或
int *pp[2]={a,b};
printf("%c[%d] : %dn", name[j], i, pp[name[j]-'a'][i]);
为了解释第二个,我们将指向数组第一个元素的指针存储在数组pp
中。然后我们根据 name[j]
中的字符打印它。
当name[j]
a
时,我们访问位于位置 0
或 name[j]-'a'
的数组pp
,对于b
,我们访问索引 1
(请参阅这等于 b
- a
(1。
1(现在 a
和 b
的 ascii 值是偶然的。因此,我们将从a
中获得正确的 offser - 这就是索引中使用的内容。
名称不是二维数组。您可以创建一个 2d 数组并添加如下值:
char name[2][10] = { 0 };
for(int i = 0; i < 2; i++){
for(int a = 0; a < 10; a++){
if(i == 0){
name[i][a] = a[i];
}
else{
name[i][a] = b[i];
}
}
}
coderredoc 所说的是你尝试做的事情的一种更优雅的方式。但是,如果你在课堂上,并且没有学习他使用的概念,你的教授可能不会接受这是一个有效的答案。
边栏:如果你在上课,有一些东西可以持保留态度:https://www.youtube.com/watch?v=YnWhqhNdYyk
相关文章:
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 在一定长度后从数组中打印时缺少整数
- 数组元素打印的递归方法
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 打印矢量数组中的所有元素
- 打印问题.我在数组中打印值时遇到一些问题
- 数组类 阵列的打印输出
- 动态分配的聊天数组打印缺失的数据和空
- 如何打印 2D 字符数组C++
- 如何修改代码以打印出数组 v2
- 在C++中初始化和打印 2D 数组
- 将浮点数转换为无符号字符数组并打印出来
- C++ 打印包含数据结构的数组
- 如何让字符数组在一行而不是多行中打印出来?
- 打印字符数组地址的正确方法
- 按字母顺序打印存储在字符数组中的信息
- 使用递归反转和打印出数组的内容
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 加载有空指针的字符数组的打印值