对于函数声明 void fun(float array[], int *ptr);函数参数 array, ptr 都是指针变量
时间: 2024-03-30 10:37:42 浏览: 205
这个说法是正确的。
在函数声明 void fun(float array[], int *ptr); 中,array 和 ptr 都是形参,也就是函数的参数。在函数调用时,实参会被传递给这些形参,而形参在函数内部被视为变量。由于 array 和 ptr 都是指针类型,因此它们都是指针变量。
在函数内部,可以通过 array 和 ptr 操作实参数组和指针的值,从而实现对实参的修改和操作。需要注意的是,由于 array 和 ptr 都是形参,它们只在函数内部生效,函数结束后将被销毁。因此,如果需要保留对实参的修改,可以使用指针或引用类型的参数,或者通过返回值来传递修改后的值。
相关问题
对于函数声明 void fun(float array[], int *ptr);参数 array 是数组名,不是指针变量,ptr 是指针变量
这个说法也不太准确。
在函数声明 void fun(float array[], int *ptr); 中,array 参数是一个数组,但是在函数调用时,数组名会被转换成指向数组第一个元素的指针。因此,实际上传递给函数的是指向数组第一个元素的指针,而不是数组本身。
而对于 ptr 参数,它是一个指向 int 类型变量的指针,因此 ptr 是一个指针变量。
需要注意的是,虽然数组名会被转换成指向数组第一个元素的指针,但是数组和指针是两种不同的类型。在函数声明中,array 参数的类型是 float 数组,而 ptr 参数的类型是 int 指针。
对于函数声明 void fun(float array[], int *ptr); 调用函数时,array按值传送地址,ptr是按地址传送数值
这个说法不太准确。
在函数调用时,如果将数组名作为参数传递给函数,那么实际上传递的是数组的首地址,也就是指向数组第一个元素的指针。所以,实际上传递的是指针,而不是数组本身。因此,在调用函数时,传递 float 数组时,实际上传递的是数组第一个元素的地址。
而对于指针类型的参数,如果按地址传递,那么实际上是将指针变量的地址传递给了函数,也就是传递了指针的指针。如果要按数值传递指针变量的值,应该使用 *ptr 的形式,即将指针变量所指向的地址中的值传递给函数。所以,函数声明 void fun(float array[], int *ptr); 中的 ptr 参数应该是按指针传递,而不是按地址传递数值。
阅读全文