尝试此操作时出现下标编译器错误:
int **arrays;
// allocate and initialize it....
int pos1 = 0;
int pos2 = 1;
int value = (*arrays[pos1])[pos2];
如果括号中的部分取消对int*
指针的引用,为什么数组访问不合法?
尝试此操作时出现下标编译器错误:
int **arrays;
// allocate and initialize it....
int pos1 = 0;
int pos2 = 1;
int value = (*arrays[pos1])[pos2];
如果括号中的部分取消对int*
指针的引用,为什么数组访问不合法?
括号中的部分是int
. 首先,arrays[pos1]
产生一个指针 ( int*
),然后您已取消引用(通过前缀*
运算符)。因此,(*arrays[pos1])
是一个简单的int
,而不是一个指针。
如果您的目标只是访问多维数组中的位置,请忘记*
并使用:
arrays[pos1][pos2]
问题出在下面一行:
int value = (*arrays[pos1])[pos2];
你有一个int **
,arrays[pos1]
使它成为一个int *
,你通过做进一步取消引用*arrays[pos1]
,所以当你这样做时(*arrays[pos1])[pos2]
,(*arrays[pos1])
是一个int
而不是int*
导致错误。
你可以做
int value = arrays[pos1][pos2];
一种放置值(梯度)然后跟踪总和线的方法。要使数组正常运行,是带括号的真正练习。也许是等级有序的。的存在
带有结构符号 { } 的 FOR 循环,包含数学结果符号 [ ][ ]。生成数组 Display 的是 FOR 循环!
利润相对较小,以获得体面的设置或完全胡言乱语。目标是将信息存储在二维数组中。将新信息放在那里,稍后再访问该信息槽。我想找点乐子,看看逻辑野兽是如何反应的。据说在1000小时的训练范围内,你应该对它有感觉:)
#include <stdio.h>
int main()
//2D_Array. Multilist. Sumline and Total Sum .
//Select each coordinate by pressing ENTER after each number .
//KHO2016.no7. mingw (TDM-GCC-32) . c-ansi .
{
//declare, valuate
int a,b,c=1,d=1,i,j,k,l,sum0=0;
int ar_a[20][20];
//calculate
jump0:
for (l=0;l<1;l++) // vary the value l<1 - l<10
{printf ("M.M.M Shelf %d\n",l); // SHELF2
for (k=0;k<1;k++) // SHELF1
{printf ("SumLine%d = %d\n",k,sum0);
{for (i=1;i<6;i++) // COLUMS .
for (j=0;j<1;j++) // LINES . per COLUM
{ar_a[i][j]=d*c++; // put value into 2D_array indevidual result slot.
sum0=sum0+(ar_a[i][j]);
printf ("%d%d(%.2d*%.2d=%.3d)\t",i,j,d,c-1,ar_a[i][j]);}}}}
printf ("TOTAL SUM = %d . Select 2 coordinates [1-5] enter, [0] enter: \n",sum0);
scanf ("%d%d",&a,&b);
printf ("You selected : %d and %d . Result value = %d\n",a,b,ar_a[a][b]);
goto jump0;
//terminate
return 0;
}