C 为什么我的2D阵列工作不正常?
我是C编程的新手。我想打印2,因为我的第一个元素是2D数组中的2。但是我知道n持有数组的第一个地址,所以*n应该打印第一个元素是2。我的代码C 为什么我的2D阵列工作不正常?,c,arrays,pointers,C,Arrays,Pointers,我是C编程的新手。我想打印2,因为我的第一个元素是2D数组中的2。但是我知道n持有数组的第一个地址,所以*n应该打印第一个元素是2。我的代码 #include <stdio.h> int main() { int n[3][3]={2,4,3,6,8,5,3,5,1}; printf("%d\n",*n); return 0; } #包括 int main() { int n[3][3]={2,4,3,6,8,5,3,5,1}; printf(“%d\n”,*n);
#include <stdio.h>
int main()
{
int n[3][3]={2,4,3,6,8,5,3,5,1};
printf("%d\n",*n);
return 0;
}
#包括
int main()
{
int n[3][3]={2,4,3,6,8,5,3,5,1};
printf(“%d\n”,*n);
返回0;
}
为什么要打印地址。有人能给我解释一下吗???你需要这样声明你的数组:
int n[3][3]={{2,4,3},{6,8,5},{3,5,1}};
请注意,第一个[3]
不是必需的(但指定它并没有错)。顺便说一下,如果启用警告,例如使用gcc-Wall
,编译器将警告初始化器中缺少大括号
然后,要打印第一个值,可以使用:
printf("%d\n",n[0][0]);
或者,如果您愿意:
printf("%d\n",*n[0]);
您有一个或多个数组,因此这将获取第0个元素(这是一个数组),然后取消对它的引用以获取第0个值。您需要像这样声明数组:
int n[3][3]={{2,4,3},{6,8,5},{3,5,1}};
请注意,第一个[3]
不是必需的(但指定它并没有错)。顺便说一下,如果启用警告,例如使用gcc-Wall
,编译器将警告初始化器中缺少大括号
然后,要打印第一个值,可以使用:
printf("%d\n",n[0][0]);
或者,如果您愿意:
printf("%d\n",*n[0]);
您有一个或多个数组,因此这将获取第0个元素(这是一个数组),然后取消对它的引用以获取第0个值。您需要像这样声明数组:
int n[3][3]={{2,4,3},{6,8,5},{3,5,1}};
请注意,第一个[3]
不是必需的(但指定它并没有错)。顺便说一下,如果启用警告,例如使用gcc-Wall
,编译器将警告初始化器中缺少大括号
然后,要打印第一个值,可以使用:
printf("%d\n",n[0][0]);
或者,如果您愿意:
printf("%d\n",*n[0]);
您有一个或多个数组,因此这将获取第0个元素(这是一个数组),然后取消对它的引用以获取第0个值。您需要像这样声明数组:
int n[3][3]={{2,4,3},{6,8,5},{3,5,1}};
请注意,第一个[3]
不是必需的(但指定它并没有错)。顺便说一下,如果启用警告,例如使用gcc-Wall
,编译器将警告初始化器中缺少大括号
然后,要打印第一个值,可以使用:
printf("%d\n",n[0][0]);
或者,如果您愿意:
printf("%d\n",*n[0]);
您有一个或多个数组,因此这将获取第零个元素(即数组),然后取消对它的引用以获得第零个值。如果
n
是一个整数数组,*n
将打印第一个整数,正如您所期望的那样
但是
n
不是这样。是一个二维数组。一种看待它的方式是:数组的数组。所以事实上,*n
是一个数组。如果n
是一个整数数组,*n
会像您所期望的那样打印第一个整数
但是
n
不是这样。是一个二维数组。一种看待它的方式是:数组的数组。所以事实上,*n
是一个数组。如果n
是一个整数数组,*n
会像您所期望的那样打印第一个整数
但是
n
不是这样。是一个二维数组。一种看待它的方式是:数组的数组。所以事实上,*n
是一个数组。如果n
是一个整数数组,*n
会像您所期望的那样打印第一个整数
但是
n
不是这样。是一个二维数组。一种看待它的方式是:数组的数组。所以实际上,*n
是一个数组。如果你有一个1D数组-
int n[9]={2,4,3,6,8,5,3,5,1};
printf("%d\n",*n);
因为如果取消对1D数组的引用,它将获取元素。现在它将打印2。
但是
它是一个二维数组,因此需要取消两次引用。如果取消引用一次,它将只获取数组的地址n
,n[0]
,*n
,&n
,&n[0]
所有这些都将代表它的起始地址
试一试-
或
如果你有一个一维数组-
int n[9]={2,4,3,6,8,5,3,5,1};
printf("%d\n",*n);
因为如果取消对1D数组的引用,它将获取元素。现在它将打印2。
但是
它是一个二维数组,因此需要取消两次引用。如果取消引用一次,它将只获取数组的地址n
,n[0]
,*n
,&n
,&n[0]
所有这些都将代表它的起始地址
试一试-
或
如果你有一个一维数组-
int n[9]={2,4,3,6,8,5,3,5,1};
printf("%d\n",*n);
因为如果取消对1D数组的引用,它将获取元素。现在它将打印2。
但是
它是一个二维数组,因此需要取消两次引用。如果取消引用一次,它将只获取数组的地址n
,n[0]
,*n
,&n
,&n[0]
所有这些都将代表它的起始地址
试一试-
或
如果你有一个一维数组-
int n[9]={2,4,3,6,8,5,3,5,1};
printf("%d\n",*n);
因为如果取消对1D数组的引用,它将获取元素。现在它将打印2。
但是
它是一个二维数组,因此需要取消两次引用。如果取消引用一次,它将只获取数组的地址n
,n[0]
,*n
,&n
,&n[0]
所有这些都将代表它的起始地址
试一试-
或
2d数组只是数组的数组,因此
*n
实际上是第一个子数组,要打印第一个子数组的第一个元素:
printf("%d\n", **n);
或者这更简单、更清楚:
printf("%d\n", n[0][0]);
2d数组只是数组的数组,因此
*n
实际上是第一个子数组,要打印第一个子数组的第一个元素:
printf("%d\n", **n);
或者这更简单、更清楚:
printf("%d\n", n[0][0]);
2d数组只是数组的数组,因此
*n
实际上是第一个子数组,要打印第一个子数组的第一个元素:
printf("%d\n", **n);
或者这更简单、更清楚:
printf("%d\n", n[0][0]);
二维数组只是数组的数组,因此
*n
实际上是第一个子数组