函数将添加到数组的两个维度,而不是一个C
当我尝试将变量保存到二维数组时,它会将其保存为二维[0][1],而不是一维 例如:函数将添加到数组的两个维度,而不是一个C,c,linux,C,Linux,当我尝试将变量保存到二维数组时,它会将其保存为二维[0][1],而不是一维 例如: dodajDoKolejki(1,1)//将数字1添加到维度1 priting数组给出了如下所示的结果,但它不应该改变kolejka[0] kolejka[0] = 0 0 1 0 0 0 0 0 0 kolejka[1] = 1 0 0 0 0 0 0 0 0 int(*kolejka)[2];//全局变量 ... int队列[2][ilSamochodow+1]; kolejka=&queue;
//将数字1添加到维度1dodajDoKolejki(1,1)
- priting数组给出了如下所示的结果,但它不应该改变kolejka[0]
kolejka[0] = 0 0 1 0 0 0 0 0 0 kolejka[1] = 1 0 0 0 0 0 0 0 0
int(*kolejka)[2];//全局变量
...
int队列[2][ilSamochodow+1];
kolejka=&queue;
...
void dodajDoKolejki(内华达州,内华达州)
//正在从1添加数字-。。。随机尺寸(以miasto形式给出)
{
//检查数组中是否已存在编号(int-istnieje)
int-istnieje=0;
int i;
对于(i=0;i而言,kolejka变量的维度和赋值不正确。应为:
int (*kolejka)[ilSamochodow+1]; // Global variable
int queue[2][ilSamochodow+1];
kolejka = queue;
根据您尝试使用它的方式。队列是指向ilSamochodow+1整数数组的指针数组。因此,要声明与队列兼容的指针,您需要声明指向ilSamochodow+1整数数组的指针
ilSamochodow+1整数。此
int (*kolejka)[2]; // Global variable
int queue[2][ilSamochodow+1];
…声明指向2int
s数组的指针。此
int queue[2][ilSamochodow+1];
…声明了一个由2个数组组成的数组,其中包含ilSamochodow+1
int
s。因此,此
kolejka = &queue;
…将不兼容类型的指针指定给变量kolejka
(您的编译器应该就此向您发出警告)。因此,取消引用指针会产生未定义的行为
如果您改为这样声明queue
,您就可以了:
int queue[ilSamochodow+1][2];
int (*kolejka)[ilSamochodow+1];
或者如果您这样声明kolejka
:
int queue[ilSamochodow+1][2];
int (*kolejka)[ilSamochodow+1];
由于kolejka
是一个全局变量,后者假设ilSamochodow
解析为编译时常量,这对您来说似乎不太可能
此外,尽管&queue
和queue
在大多数上下文中解析为相同的地址,但它们具有不同的类型(如上所述)。一旦维度顺序问题得到解决,正确的类型分配将是:
kolejka = queue;
第一行的括号令人费解且不必要