C中值传递与地址传递

#include <stdio.h>

void print(int a)
{
	(a)++;
	printf("a=%d\n",a);
}

int main(void)
{
	int b = 6;
	print(b);
	printf("%d\n" ,b);
	return 1;
}

//这种情况下就属于值传递,因为作用域和内存模型的原因,生命周期消亡,数据消失,故最后数据不变。
#include <stdio.h>

void print(int * a)
{
	(*a)++;
	printf("a=%d\n",*a);
}

int main(void)
{
	int b = 6;
	print(&b);
	printf("%d\n" ,b);
	return 1;
}

//这种情况下属于地址传递,地址传递会改变值。

时间: 2024-10-13 22:16:15

C中值传递与地址传递的相关文章

对几种传递的理解:值传递,地址传递,引用传递

对几种传递的理解:值传递,地址传递,引用传递 因为会用到形参和实参的概念,区别一下,形参 即在定义函数时 int add(int a , int b)中a,b,即为形参.而当调用时int(3,4)中3,4即为实参. ①值传递 #include<stdio.h> void Exchg1(int x, int y){ int tmp; tmp=x; x=y; y=tmp; printf("x= %d , y= %d\n",x,y);}int main(){ int a=4,b=

C语言:值传递,地址传递和引用传递(example:值交换)

于C语言中值传递.地址传递和引用传递的我个人理解. 通过一个例子:swap(交换两个整型变量的值)来表现! 1 #include <stdio.h> 2 void swap1(int* a,int* b); 3 void swap2(int& a,int& b); 4 void swap3(int* a,int* b); 5 6 void main(){ 7 printf("Hello World!\n"); 8 int a = 3; 9 int b = 4

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

参数传递 C语言参数传递一般分为:值传递和地址传递 (注意:C语言中没有引用传递,C++才有引用传递,因为很多C语言环境是用C++编译器编译,使得C看起来支持引用传递,导致很多网上很多blog都把引用传递归为C语言参数传递的一类, 当使用Microsoft Visual C++ 2010 Express或VC6之类的编译器时使用引用传递就无法编译通过) 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形参) 1 #include <

c语言进阶9-值传递与地址传递

一.  函数的值传递 函数的值传递是指参数为基本类型时,如整型.浮点型.字符型(特指单字符型)时,参数传递时是从实参拷贝一份值传给形参,形参的变化不会影响实参的值. 1.        基本类型做参数 基本类型:是指整型(short int long等).浮点型(float.double).字符型(char特指单字符型) 当参数为基本类型时,属于值传递,注意以下几点: (1)函数的实参和形参分别占有存储单元 (2)函数的实参复制一份值传给形参 (3)实参不会随着形参的变化而变化 例如: int

值传递,地址传递

基本变量传参是值拷贝,引用变量传参是传地址(数组,对象),会修改对象的值,因为有了地址,但String类型是final类,不改变值. int x = 10; change(x);//调用x 传的是值就是10,但x是在栈中值还是10 System.out.println(x); public void change(int x) { x = 20; } int[] x = new int[10]; change(x);//传递的是地址也是x的值,x是数组的引用存的是数组在堆内存中的地址,将地址传给

Java小白进阶之值传递-地址传递

1 class ClassA{ 2 int value;//成员变量 3 } 4 public class TestClassA{ 5 6 public static void main(String args[]){ 7 int value = 10;//局部变量 8 changeInt(value); 9 System.out.println(value);// 10 10 11 ClassA ca = new ClassA(); 12 ca.value = 10; 13 14 change

【转载】函数参数传递(值传递,指针传递)

C语言值传递 地址传递 : 1.值传递 eg: 1     void Exchg1(int x, int y)   2     {   3          int tmp;   4          tmp = x;   5          x = y;   6          y = tmp;   7          printf("x = %d, y = %d\n", x, y);   8     }   9     main()  10     {  11        

JAVA随笔篇二(深入分析JAVA简单类型、String和对象的值传递和引用传递)

关于JAVA的值传递和引用传递,翻看了很多资料和博客,感觉大多数讲的很乱,都是自己明白了之后就不讲了的样子,终于算是比较理解这几个概念了,下面做一个总结. 1.简单类型的参数传递 Java方法的参数是简单类型的时候,是按值传递的 (pass by value).下面举一个经典的swap函数: 无法交换值的方法: package TestTransferPack; public class TestTransfer { public static void main(String[] args)

Jvm(31),理解升级----通过JVM内存模型深入理解值传递和引用传递两种方式

值传递和引用传递分析 Java中数据类型分为两大类:基本类型和引用类型(也就是对象类型). 基本类型:boolean.char.byte.short.int.long.float.double 引用类型:类.接口.数组 因此,变量类型也可分为两大类:基本类型和引用类型. 在分析值传递和引用传递之前,建议了解下以上变量类型在Java内存管理模型中的位置,如果对此有所了解,将更加有助于理解两种传递的方式^_^ 在Java内存中,基本类型变量存储在Java栈(VM Stack)中,引用变量存储在堆(H