4.6指针变量作参数
Posted 王小东大将军
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.6指针变量作参数相关的知识,希望对你有一定的参考价值。
Q:编写一个函数,该函数被主函数调用,通过该函数实现向主函数中定义的数组输入数据。
注意:函数的调用是在内存的堆栈中实现的。一旦函数调用结束,该函数内部的所有局部变量都会被释放掉。
本题目要求对主函数中的数组值进行修改,所以无法通过函数的返回值来实现该功能。要想通过被调函数修改主函数的数组值,只能将数组的首地址(指针)作为函数的参数进行传递,被调函数通过主函数传递来的数组首地址(指针)对数组的内容进行修改。
#include<iostream> #include<cstdio> using namespace std; void inputarray(int *array,int len) { int i; for(int i=0;i<len;i++) scanf("%d",array+i);// } int main() { int i,array[10]; printf("input data for array\n"); inputarray(array,10); for(int i=0;i<10;i++) printf("%d ",array[i]); printf("\n"); return 0; }
本函数中的inputarray()的实参array是数组名,是一个地址常量,表示数组的首地址。形参的array是一个指针变量,用来接收实参传递过来的数组的首地址。
对于本题,函数inputarray()的形参也可以定义为int array[]的形式,但是必须注意这种形式的形参只限于数组首地址的传递。对于一般的指针传递,形参还是需要定义为指针变量的形式。在调用函数scanf()中,参数array+i表示指向数组中第i个元素的指针,也就是数组第i个元素的地址,等价于&array[i]
以上是关于4.6指针变量作参数的主要内容,如果未能解决你的问题,请参考以下文章
不理解为什么调用一级指针作函数参数时候,就不能把myp1 = NULL,