# include<stdio.h>
int main() {
int arr[2][2];
arr[0][0] = 1;
arr[0][1] = 2;
arr[1][0] = 3;
arr[1][1] = 4;
printf("%d", arr[1]);
printf("%d", arr[1][0]);
return 0;
}
上面代码的输出是无符号整数。
输出:
64222963
如何获得 {3,4} 和 3 的输出?
你的第一个 printf() 语句引用了一个数组 (arr[1]),所以它打印出数组的地址。
你的第二个 printf() 语句打印一个数组元素,但是因为你没有包含结束行(“ ") 在你的第一个 printf() 中,它只是被添加到第一个 printf() 的末尾。
除非它是一个字符串并且您正在使用
%s
转换说明符,否则您不能在一次转换中打印整个数组(或二维数组的一行)的内容。要获得所需的输出,您必须单独打印每一行元素:
printf( "{%d, %d}\n", arr[1][0], arr[1][1] );
在更一般的情况下,每行有两个以上的元素,您可以使用循环(最好在它自己的函数中):
void dispArr( int *arr, size_t num_elements, FILE *stream)
{
fputc( '{', stream);
for ( size_t i = 0; i < num_elements; i++ )
fprintf( stream, "%d%s", arr[i],
num_elements - i > 1 ? ", " : "}\n" );
}
fprintf
语句的最后一位基本上是说“在每个元素之后输出,
,除了最后一个元素,它输出}\n
”。在您的代码中,您将其称为
dispArr( arr[1], 2, stdout );