Ca(OH)2
关于指针和函数的问题,求大神解释

本人最经无聊,在用c语言(vc6.0)高精度计算的程序。然后想把输入也写一个函数,想让主程序看的清楚一点。函数本身问题不是太大,但是我在调用的时候出现了问题。函数传入的参数是一个数组的地址,和输入个数的限制。但是在实际调用时,我在主程序写:

函数名(&数组名,长度);

程序一直在这行上报错。

但是一旦我写成:

函数名((数组名),长度);

就不会有任何问题。~34!

我虽然知道()和&都是取址符,但是这两个的区别又是什么呢?为什吗会报错呢?

这种情况在别的程序也有发生。但是不经常,(好吧,是我程序编的少)。到底是为什么?!!!!!!$63$

scropioczn
次取址的问题
展开Biu

foodszhu 发表于 2013-7-18 00:16

倒不是2次取址的问题。。。你用printf("%p")看,&array和array的结果一样。指向的地址是一个。。并不是地 ...

受教受教~@6#

[查看全文]
foodszhu
本帖最后由
展开Biu

本帖最后由 foodszhu 于 2013-7-18 00:25 编辑

Ca(OH)2 发表于 2013-7-18 00:21

那么。。。就是说一堆有关的指针也可以变成一个指针类型的数组。。

额。。。这个你可以查一下数组指针和指针数组的区别。。。你说的是指针数组,而这个&array是数组指针,前者是一个数组,内容是指针,后者是指针,指向一个数组[mw_shl_code=c,true]int *p[5]//指针数组

int (*p)[5]//数组指针[/mw_shl_code]

[查看全文]
Ca(OH)2
次取址的问题
展开Biu

foodszhu 发表于 2013-7-18 00:16

倒不是2次取址的问题。。。你用printf("%p")看,&array和array的结果一样。指向的地址是一个。。并不是地 ...

那么。。。就是说一堆有关的指针也可以变成一个指针类型的数组。。

[查看全文]
Ca(OH)2
其实你那个数组名的参数已经是地址了
展开Biu

scropioczn 发表于 2013-7-17 22:40

其实你那个数组名的参数已经是地址了,括号据我所知并无取址功能,只能用于设置运算优先级,所以再次相 ...

我去。。。。居然是如此简单之事。。。也就是说。。。数组名就已经是指针(地址)了?!!!

[查看全文]
foodszhu
本帖最后由
展开Biu

本帖最后由 foodszhu 于 2013-7-18 00:18 编辑

scropioczn 发表于 2013-7-17 22:40

其实你那个数组名的参数已经是地址了,括号据我所知并无取址功能,只能用于设置运算优先级,所以再次相 ...

倒不是2次取址的问题。。。你用printf("%p")看,&array和array的结果一样。指向的地址是一个。。并不是地址的地址。。主要是&array后的得到是数组指针。。。而导致类型不匹配,数组指针就是形如

[mw_shl_code=c,true]int (*array)[5][/mw_shl_code]这样的,是指向数组的指针,取内容后成为一个数组.

C一般通过指针来传递数组,而不是用数组指针传递。。也算是比较麻烦的应用。。。就是类似于二维数组的。。但是还是有不少区别。。指针和数组还是不能一概而论的。。

[查看全文]
scropioczn
其实你那个数组名的参数已经是地址了
展开Biu

其实你那个数组名的参数已经是地址了@97#,括号据我所知并无取址功能,只能用于设置运算优先级,所以再次相当于没有。这样之前报错也解释的清。由于你带进去的是数组名,再加个&就相当于二次取址,即为取地址的地址……所以与定义的参数类型不符。

其实这点很好找啊,C的库里面,像是stdio.h神马的经常要调用字符串作参数啊,字符串也是数组来着。例如:_CRTIMP int __cdecl __MINGW_NOTHROW printf (const char*, ...);

以下为一段类似作用的代码,看看我理解的对不对。

[mw_shl_code=c,true]void getArray(int *the_array, int max) {

int i;

for(i = 0; i < 6; i ++) {

printf("%i", the_array);

}

}

int main(void) {

int array[6];

array[0] = 0;

array[1] = 1;

array[2] = 2;

array[3] = 3;

array[4] = 4;

array[5] = 5;

getArray(array, 6);

return 0;

}[/mw_shl_code]

[查看全文]
天天做操身体好
数学渣还没学呢
展开Biu

数学渣还没学呢。。。

[查看全文]