简体   繁体   English

C使用函数重写数组,避免使用指针

[英]C rewriting an array using function, avoiding pointers

i have searched thoroughly and could not find an answer to my question. 我已经进行了彻底搜索,找不到我的问题的答案。

i would like a function in my code to rewrite an already existing array. 我想在我的代码中的一个函数重写一个已经存在的数组。 i would like it to be local array-meaning an array that is defined and initialized inside main. 我希望它是局部数组-意味着在main内部定义和初始化的数组。 i would like to execute without using pointers. 我想不使用指针就执行。

i think it should be possible because of the fact that arrays are actually pointers(as far a read). 我认为应该是有可能的,因为数组实际上是指针(就读而言)。

this is my code, for what its worth: 这是我的代码,其价值:

#include<stdio.h>

void minusone_array_rewrite(int food_arr[5][2]);
int main()
{
    int food_arr[5][2] = {0};
    minusone_array_rewrite(food_arr[5][2]);

    for (int i = 0; i < 5; i++)////just printing
    {
        printf("%d", food_arr[i][0]);
        printf("%d", food_arr[i][1]);
    }
    return 0;
}

void minusone_array_rewrite(int food_arr[5][2]) {
    for (int i = 0; i < 5; i++)
    {
        food_arr[i][0] = -1;
        food_arr[i][1] = -1;
    }
}

Well, as you said by yourself arrays in C are pointers themselves, the problem I see is initialization of your array and passing it to function minusone_array_initializer . 嗯,就像您自己说的那样,C语言中的数组本身就是指针,我看到的问题是数组的初始化并将其传递给minusone_array_initializer函数。

The correct way would be : 正确的方法是:

#include<stdio.h>

void minusone_array_initializer(int food_arr[5][2]);
int main()
{
    int food_arr[5][2];

    minusone_array_initializer(food_arr);

    for (int i = 0; i < 5; i++) {
        printf("%d , %d \n",food_arr[i][0],food_arr[i][1]);
    }
    return 0;
}

void minusone_array_initializer(int food_arr[5][2]) {
    for (int i = 0; i < 5; i++)
    {
        food_arr[i][0] = -1;
        food_arr[i][1] = -1;
    }
 }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM