Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么我的2D阵列工作不正常?_C_Arrays_Pointers - Fatal编程技术网

C 为什么我的2D阵列工作不正常?

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);

我是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);
返回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
实际上是第一个子数组