传递函数中数组的位置

时间:2017-06-17 07:42:54

标签: c arrays pointers

如何在c中的函数中传递指针数组的位置,即 我有一个$("#signup_form_modal_submit").click(function(e){ $.post("<?php echo BASE_URL.'/login/register';?>", $('#signup_modal').serialize(),function(data){ var jsondata = $.parseJSON(data); if(jsondata.a ==1 ){ $("#modal-signup").modal('toggle'); //$("#modal-signup").modal('hide'); //$("[data-dismiss=modal]").trigger({ type: "click" }); } } }); ,我想通过一个函数将int* array[10];指定为特定数字的位置,array[0]。该函数的参数应该是什么样的。我试过了: 5 但它没有用。

1 个答案:

答案 0 :(得分:1)

数组始终作为指向数组开头的指针传递,即使您没有显式写入它也是如此。所以从你的问题中给出一个数组的声明:

int *array[10];

以下两个函数都将接受指向此类数组的指针:

int foo(int *array[]);

int foo(int **array);

它们只是等价的,我建议你使用第二种形式,因为它可以明确地将哪种类型传递给函数。

在函数内部,您可以访问任何元素,因为索引器在指向数组的指针上的定义方式与数组本身相同:

int foo(int **array)
{
    int *sixthElement = array[5];
    // [...]
}

其他风格说明:在C中,通常的做法是在声明指向标识符的指针时附加*,而不是类型,即更好写

int *array[10];

而不是

int* array[10];

这是因为在C声明中,没有指针类型这样的东西,有一个指针声明符(由*组成,可选的限定符和标识符)和此声明符声明一个变量是指向指定类型的指针。这是一个微妙的区别,但是如果你试图在一行中声明多个变量(不要这样做,这只是为了解释),你会注意到它:

int *a, b; // <- declares a as a pointer to int, b just as an int