//--------------------单向值传递------------------------

 // swap这个方法在被调用时,给形参a,b分配了空间
// 主调函数将【数值】传递给【形参】
// 形参完成操作之后并不能将值传回给主调函数
// 形参的生命周期仅仅在方法体中
/* void swap(int a , int b)
{
int tmp = a;
a = b;
b = tmp;
}*/
//-----------------------验证程序------------------------
/*
int x(6) , y(7);
cout << "交换值以前的地址:x=" << &x << "y=" << &y << endl;
cout << "交换值以前的值:x=" << x << "y=" << y << endl;
swap(x , y);
cout << "交换值以后的地址:x=" << &x << "y=" << &y << endl;
cout << "交换值以后的值:x=" << x << "y=" << y << endl;
*/
//------------------------------------------------------- //--------------------单向值(指针)传递------------------------
// 同值传递是一个道理
// 传进来的指针变量被形参接收
// 形参在执行完方法之后无法传回主调函数中
//void swap(int *a , int *b)
//{
// int *tmp = a;
// a = b;
// b = tmp;
//}
//-----------------------验证程序------------------------
/*
int x(6) , y(7);
cout << "交换值以前的地址:x=" << &x << "y=" << &y << endl;
cout << "交换值以前的值:x=" << x << "y=" << y << endl;
swap(&x , &y);
cout << "交换值以后的地址:x=" << &x << "y=" << &y << endl;
cout << "交换值以后的值:x=" << x << "y=" << y << endl;
*/
//------------------------------------------------------- //--------------------地 址 传 递------------------------ // 形参接收到了主调函数传递的参数
// 形参a将主调函数传递过来的【指针变量】指向的【内存地址】的【数值】赋予被调函数中的临时变量tmp
// 形参b将【指针变量】指向的【内存空间】中的【数值】赋予形参a存储的【指针变量】指向的【内存空间】
// 临时变量tmp将【数值】赋予形参b存储的【指针变量】指向的【内存空间】
// 因为是【直接】对【指针变量】指向的【内存空间】中的【数值】进行修改,所以达到了所谓的双向传值
//void swap(int *a , int *b)
//{
// int tmp = *a;
// *a = *b;
// *b = tmp;
//}
//-----------------------验证程序------------------------
/*
int x(6) , y(7);
cout << "交换值以前的地址:x=" << &x << "y=" << &y << endl;
cout << "交换值以前的值:x=" << x << "y=" << y << endl;
swap(&x , &y);
cout << "交换值以后的地址:x=" << &x << "y=" << &y << endl;
cout << "交换值以后的值:x=" << x << "y=" << y << endl;
*/
//------------------------------------------------------- //---------------动态分配内存空间实现值交换----------------
// 定义俩指针变量x,y
// 分别对他们进行动态分配内存空间
// x , y 仅为1字节的指针变量,指向了两个分配好的空间上
// 将x,y的值进行互换者达到了交换值的效果
/*
int* x ,* y; x = (int*)malloc(sizeof(int));
y = (int*)malloc(sizeof(int)); *x = 6;
*y = 7; cout << "交换值以前的地址:x=" << x << "y=" << y << endl;
cout << "交换值以前的值:x=" << *x << "y=" << *y << endl; int *tmp;
tmp = x;
x = y;
y = tmp; cout << "交换值以后的地址:x=" << x << "y=" << y << endl;
cout << "交换值以后的值:x=" << *x << "y=" << *y << endl;
*/

还有一点没弄明白就是如下代码在【静态分配内存】的时候为什么不能用改变【内存空间】的【地址】来达到【数值】交换的效果???!!!

看官有和妙解请不吝赐教..

 //--------------------单向值(指针)传递------------------------
// 同值传递是一个道理
// 传进来的指针变量被形参接收
// 形参在执行完方法之后无法传回主调函数中
//void swap(int *a , int *b)
//{
// int *tmp = a;
// a = b;
// b = tmp;
//}
//-----------------------验证程序------------------------
/*
int x(6) , y(7);
cout << "交换值以前的地址:x=" << &x << "y=" << &y << endl;
cout << "交换值以前的值:x=" << x << "y=" << y << endl;
swap(&x , &y);
cout << "交换值以后的地址:x=" << &x << "y=" << &y << endl;
cout << "交换值以后的值:x=" << x << "y=" << y << endl;
*/
//-------------------------------------------------------

C语言参数传递的更多相关文章

  1. C语言参数传递(值传递、地址传递)+二级指针

    参数传递 C语言参数传递一般分为:值传递和地址传递(本质上只有值传递) (注意:C语言中没有引用传递,C++才有引用传递,因为很多C语言环境是用C++编译器编译,使得C看起来支持引用传递,导致很多网上 ...

  2. R语言参数传递 按引用传递

    R 语言的参数传递是按照引用传递的,二者共享内存 如果想要按值传递 使用函数 copy()

  3. C/C++语言参数传递----函数/方法 参数的指针引用传递

    int m_value = 1; void func(int *p) { p = &m_value; } int main(int argc, char *argv[]) { int n = ...

  4. C语言之参数传递

    学了四年的计算机,一直让自己比较苦恼的问题是C语言的参数传递问题,之所以说是苦恼,是因为在某年的一个学期,不幸接触到数据结构,光一个链表就把自己弄得死去活来的,而且自已一直就楞以为在操作的过程中,传递 ...

  5. 由链表初始化看C语言的二级指针

    先来看C语言创建链表.插入节点和遍历链表的一段代码: #include <stdio.h> #include <stdlib.h> typedef int ElemType; ...

  6. 0.0C语言重点问题回顾

    左值和右值得区别:左值是用来表明变量的身份的,右值更加侧重于值本身: void*是个例外,它只有基地址没有类型信息,所以无法解引用. int *p = malloc(100); char *s = m ...

  7. C/C++子函数参数传递,堆栈帧、堆栈参数详解

    本文转载自C/C++子函数参数传递,堆栈帧.堆栈参数详解 导语 因为参数传递和汇编语言有很大联系,之后会出现较多x86汇编代码. 该文会先讲一下x86的堆栈参数传递过程,然后再分析C/C++子函数是怎 ...

  8. BlueZ

    一.BlueZ在ubuntu PC上的基础应用 1.bluez的安装及基本功能 dong@ubuntu:~/bluez$ lsbluez-5.47.tar.xz   SPP-loopback.pydo ...

  9. C语言中的参数传递

    有空看看: c语言 函数传输传递的三种方式(值.指针.引用) C语言之参数传递 C语言形参和实参,传值调用和引用调用的区别

随机推荐

  1. SQL SERVER2012新分页方式 轉載

    SQL SERVER2012在ORDER BY 子句中加入了新元素offset,允许用户在排序完成的结果集中自定义输出行范围,大大简化了分页SQL的书写方式和效率. SQL SERVER2012在OR ...

  2. MyEclipse 2013 导入MyEclipse 9.0的EJB项目时,需要注意

    点击“next”按钮,出现下面的对话框: 再点击“next”按钮,出现下面的对话框:

  3. ul li 好友列表

    <div class="col-md-4 mt"> <div class="friend-list"> <h4 class=&qu ...

  4. Java学习之ThreadLocal

    转自:http://www.cnblogs.com/doit8791/p/4093808.html#3197185 在同步机制中,通过对象的锁机制保证同一时间只有一个线程访问变量.这时该变量是多个线程 ...

  5. day2_python学习笔记_chapter4_标准类型和内建函数

    1. 标准类型 Integer,Boolean, Long integer, Floating point real number, Complex number, String, List, Tup ...

  6. R与数据分析旧笔记(十七) 主成分分析

    主成分分析 主成分分析 Pearson于1901年提出的,再由Hotelling(1933)加以发展的一种多变量统计方法 通过析取主成分显出最大的个别差异,也用来削减回归分析和聚类分析中变量的数目 可 ...

  7. Android 常用动画小结

    1. 渐入动画 // Request the next activity transition (here starting a new one). startActivity(new Intent( ...

  8. 表单元素的submit()方法和onsubmit事件(转)

    1.表单元素中出现了name="submit"的元素 2.elemForm.submit();不会触发表单的onsubmit事件 3.动态创建表单时遇到的问题 表单元素拥有subm ...

  9. 3种方式实现可滑动的Tab

    1. 第一种,使用 TabHost + ViewPager 实现 该方法会有一个Bug,当设置tabHost.setCurrentTab()为0时,ViewPager不显示(准确的说是加载),只有点击 ...

  10. TJU 2944 Mussy Paper 最大权闭合子图

    传送门 给你一些东西,  每个东西有一个值,有正有负. 在给一些关系, 选了其中一个物品, 和他有关系的也必须全都选上, 关系是单向的. 问最后的最大价值是多少, 如果小于0输出“   **** ”( ...