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,

Xcode 4.6 的备份代码片段

在C代码中将结构体变量作为参数传递效率忒低

C 语言指针间接赋值 ( 指针作为 函数参数 的意义 | 间接赋值 代码示例 )

web代码片段

C言语指针变量作为函数参数