传递2d数组然后没有得到值

时间:2013-03-07 19:37:44

标签: c pointers multidimensional-array

我正在编写一些我正在编写的代码问题。 我经常使用这个网站,因为我发现很多人已经问过我想知道的相同问题。有了这个,我想感谢社区在这里所有以前对我的编程难题的见解。 (在我们走得太远之前,这不是一个'学校项目'或'学校作业',我只是想解决'旅行推销员问题'并提高我的C技能。

这是我一直坚持的代码部分:

   void printAndFlip(int arrayone[][20], int citytotal, int arrayCities[])
   {

////Finds cost:
int x, y, z;
int totalCost
int singleTrip;
int cheepestTrip;
int nCity = citytotal + 1;      //nCity is the number of Cities //Adding one to accomadate going back to the first city
int gCounter;
int gCounterTrue = 1;
int cheepestTrip[20];
int totalCost = 0;
int lCounter;
int i;
int n = citytotal;


////Sets up for a default case to set cheepestTrip:
for(gCounter = 1; gCounter <= nCity; gCounter++)
{
    while(gCounterTrue == 1)
    {
        if(gCounter == arrayCities[gCounter])
        {
            gCounterTrue = 1;
        }
        else
        {
            gCounterTrue = 0;
            gCounter = 50;      //Stopping the larger for loop with 50 (the nCity can't be larger than 20) so that it will hopefully be faster
        }
        if(gCounter == nCity)
        {
            if(arrayCities[1] == arrayCities[nCity])
            {
!!!!!               cheepestTrip = totalCost;
            }
        }   
    }
}
for(x = 1; x < nCity; x++)
{
    y = arrayCities[x];
    z = arrayCities[x+1];
    singleTrip = arrayone[y][z];        //finding individual cost of each trip...will be added to 'totalCost' below
    totalCost = singleTrip + totalCost;
} 

!!!!!!!!  if(totalCost <= cheepestTrip)
{
    for(lCounter = 1; lCounter <= nCity; lCounter++)
    {
        cheepestTrip[lCounter] = arrayCities[lCounter];
    }
}

为了更容易显示编译错误的位置,我在行上添加感叹号。 请告诉我,如果我错了,但是当我将'arrayone'发送到printANDFlip时,我正在传递一个带数组的指针数组? 我知道编译错误与指针有关,但我不确定它们应放在何处。 任何和所有帮助将不胜感激。 非常感谢, 亚历

4 个答案:

答案 0 :(得分:1)

在这里,您要将数组指针与int值进行比较

if(totalCost <= cheepestTrip)

例如,您应该将它与该数组的元素进行比较

  if(totalCost <= cheepestTrip[0])

答案 1 :(得分:1)

cheepestTrip是数组的名称,相当于指向第一个元素的指针。 totalCostint。只需从代码顶部的声明中删除[20]即可。

答案 2 :(得分:1)

明确其他一些回复的含义:您有两个名称相同但类型不同的变量:

int cheepestTrip;  /* This is an single integer... */

int cheepestTrip[20];  /* ...but this is an array of integers. */

这应该在编译时触发警告(可能是关于重新声明现有变量的事情)。

答案 3 :(得分:0)

您正在比较指向int的指针,您的特定编译器可能不允许这样做(尽管我可以使用C)。但是cheapestTrip本质上是指向你的int数组中第一个元素的指针,而totalcost只是一个int primative