如何在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
但它没有用。
答案 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