• 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
    ");
    	inputarray(array,10);
    	for(int i=0;i<10;i++)
    		printf("%d ",array[i]);
    	printf("
    ");
    	return 0;
    }
    

      本函数中的inputarray()的实参array是数组名,是一个地址常量,表示数组的首地址。形参的array是一个指针变量,用来接收实参传递过来的数组的首地址。

      对于本题,函数inputarray()的形参也可以定义为int array[]的形式,但是必须注意这种形式的形参只限于数组首地址的传递。对于一般的指针传递,形参还是需要定义为指针变量的形式。在调用函数scanf()中,参数array+i表示指向数组中第i个元素的指针,也就是数组第i个元素的地址,等价于&array[i]

    拥抱明天! 不给自己做枷锁去限制自己。 别让时代的悲哀,成为你人生的悲哀。
  • 相关阅读:
    eclipse的web项目热部署
    JAVA字符串转日期或日期转字符串
    右下角弹出框
    div拖拽
    js的富文本框与日期插件
    slected多选框的转移
    判断当前日期是否是当月数据
    java常见面试题(二)
    静态代理和动态代理
    java常见面试题(一)
  • 原文地址:https://www.cnblogs.com/dd2hm/p/6750120.html
Copyright © 2020-2023  润新知