7.通过函数修改实参的值 2012.3.20

***************************************************************************************************************************

7.通过函数修改实参的值   2012.3.20

***************************************************************************************************************************

#include "stdio.h"
#include "iostream"
using namespace std;

void f(int *p);//通过指针修改实参
void ff(int q);//并不能实现修改实参的目的

void main()
{
	int i = 10;
	cout<<i<<endl;
	ff(i);
	cout<<i<<endl;
	f(&i);
	cout<<i<<endl;

}
void f(int *p)
{
	*p = 99;
}
void ff(int q)
{
	q = 100;

}

结果:

10
10
99

时间: 2024-10-19 15:01:46

7.通过函数修改实参的值 2012.3.20的相关文章

通过指针形参修改实参的值1

注意:图示使用的地址只是假设的,并不是真正的内存地址,只是说明原理 先说说修改基本类型变量的值,比如说int类型,可以直接修改,也可以通过函数修改,看下代码 #include <stdio.h> void change(int *a) { int temp = 555; a = &temp; } int main() { int i = 5; int j = 55; int *p = &i; i = 10;//第一种修改方法 printf("%d\n", i

通过指针形参修改实参的值2

注意:图示使用的地址只是假设的,并不是真正的内存地址,只是说明原理 上次说到的是修改基本类型的变量,这次来说修改指针变量的值 #include <stdio.h> void change(int *a) { int temp = 555; a = &temp; } int main() { int i = 5; int *p = &i; printf("%p\n", p); change(p);//并没有修改成功p的值 printf("%p\n&q

不通过传值传指针传引用而实现形参修改实参的值

1.首先了解一下堆栈帧的创建步骤(来自<32位汇编语言程序设计>钱晓捷一书): 1)主程序把传递的参数压入堆栈: 2)调用子程序时,返回地址压入堆栈: 3)子程序中,EBP压入堆栈:设置EBP等于ESP,通过EBP访问参数和局部变量: 4)子程序有局部变量,ESP减去一个数值,在堆栈预留局部变量使用的空间: 5)子程序要保护的寄存器压入堆栈. 如下图: 2.了解了堆栈帧之后,就可以得出以下程序: 1)嵌入汇编实现 #include<iostream> using namespace

c#中数组名作为参数如何通过修改形参的值来改变实参的值?

using System; namespace ConsoleApplication1 { class Program { void f(int[] a) { a[0] = 1;//通过这种方式就可以修改实参的值,说明通过这种方式就是在原内存上来修改元素的值 } static void Main(string[] args) {Program obj=new Program(); int[] a =new int[4] { 6, 7, 8, 9 }; obj.f(a); for (int i =

指针作为函数参数,修改实参值

1,指针作为函数参数, 指针可以指向内存中任意一个数据,通过间接引用能够在函数内修改函数外甚至系统中的数据; 为了避免指针作为函数参数导致数据被意外修改,我们可以使用const来保护指针所指向的数据; 2,指针作为函数返回值, 同别的数据类型int,float一样,指针也能够作为函数的一种返回值类型,把返回指针的函数称为指针函数; 返回的指针所指向的数据不能够是函数内部声明的变量; 更灵活的存储,使用数组的时候面临种尴尬:数组的存储空间必须在程序运行前申请,即数组的大小在编译前必须是已知的常量表

已定义的函数有返回值,函数调用可以作为一个函数的实参,但是不能作为形参

1.问题描述 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( D  ) A)函数调用可以作为独立的语句存在 B)函数调用可以作为一个函数的实参 C)函数调用可以出现在表达式中 D)函数调用可以作为一个函数的形参 解析:返回值存在寄存器中, 没有地址, 不能作为形参,但可以作为实参. 2.形参与实参区别 形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用. 实参出现在主调函数中,进入被调函数后,实参变量也不能使用. 形参和实参的功能是作数据传送.发生函数调用时,

《JS权威指南学习总结--8.3 函数的实参和形参》

内容要点: 一.可选形参      当调用函数的时候传入的实参比函数声明时指定的形参个数要少,剩下的形参都将设置为undefined值.     例如:       //将对象o中可枚举的属性名追加至数组       //如果省略a,则创建一个新数组并返回这个新数组.        function getPropertyNames(o,/*optional*/a){           if(a === undefined) a= [];           for(var property

函数的实参 函数的形参 闭包 js

函数的实参和形参# 可选形参```if(a === undefined) a = [];```等价于```a = a || [];```这两句是完全等价的,只不过后者需要提前声明a而已如果参数没有传入,其余的填充undefined可选的形式参数:通过注释/*optional*/来强调参数可选,并且要将其放在最后,否则就要使用null或者undefined来作为占位符来进行传入# 可变长的实参列表# callee和callercallee为指代当前正在执行的函数caller指代当前正在执行函数的函

python函数2(返回值、传递列表...)

python函数2(返回值.传递列表...) 1.返回值 1.1.返回简单的值 1 #返回简单值 2 def get_formatted_name(first_name,last_name): 3 """返回整洁的名字""" 4 full_name = first_name + ' ' + last_name 5 return full_name.title() #将首字母大写 6 7 musician = get_formatted_name(