码迷,mamicode.com
首页 > 编程语言 > 详细

C语言副本机制

时间:2019-08-16 14:34:17      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:pre   返回值   res   print   sum   通过   stat   code   http   

1.除了数组外,其他都有副本机制(包括结构体数组)

2.结构体作为参数具有副本机制,结构体返回值也有副本机制 。

3.函数的参数和返回值都有他的副本机制。

#include<stdio.h>
int a=10,b=20;
static int sum(int aa,int bb){
    printf("the aa is 0x%p,%d",&aa,aa);
    printf("\nthe bb is 0x%p,%d",&bb,bb);
    aa=100;
    return a+b;
}
int main(){
    sum(a,b);
    printf("\nthe a is 0x%p,%d",&a,a);
    printf("\nthe b is 0x%p,%d",&b,b);
}

 

技术图片

形参aa和bb是对a和b地址的拷贝。

#include<stdio.h>
int array[2]={10,20};
static int arr(int arra[2]){
    printf("\nthe array is 0x%p,%d",arra,arra[0]);
    arra[0]=123;
    return arra[0]+arra[1];
}
int main(){
    arr(array);
    printf("\nthe array is 0x%p,%d",array,array[0]);
    return 0;
}

技术图片

形参arra传入的是array的实际地址。

#include<stdio.h>
typedef struct{
    int ar[10];
    int a;
}Struct;

Struct my;
static void fuzhif(Struct mystruct){
    mystruct.a=10;
    mystruct.ar[0]=0;    
    printf("\nthe mystruct address is:0x%p,ar address is:0x%p,%d,%d",&mystruct,mystruct.ar,mystruct.a,mystruct.ar[0]);
}

int main(){
    my.a=100;
    my.ar[0]=100;
    printf("\nthe my address is:0x%p,ar address is:0x%p,%d,%d",&my,my.ar,my.a,my.ar[0]);    
    fuzhif(my);
    printf("\nthe my address is:0x%p,ar address is:0x%p,%d,%d",&my,my.ar,my.a,my.ar[0]);    
    return 0;
}

技术图片

形参mystruct传入的是结构体my的地址的拷贝。
#include<stdio.h>
typedef struct{
    int ar[10];
    int a;
}Struct;

Struct my;

static void fuzhit(Struct *mystruct){
    mystruct->a=10;
    mystruct->ar[0]=0;    
    printf("\nthe mystruct address is 0x%p,ar address is:0x%p,%d,%d",mystruct,mystruct->ar,mystruct->a,mystruct->ar[0]);
}

int main(){
    my.a=100;
    my.ar[0]=100;
    printf("\nthe my address is:0x%p,ar address is:0x%p,%d,%d",&my,my.ar,my.a,my.ar[0]);    
    fuzhit(&my);
    printf("\nthe my address is:0x%p,ar address is:0x%p,%d,%d",&my,my.ar,my.a,my.ar[0]);    
    return 0;
}

技术图片

如果形参为结构体变量,那么可以通过结构体指针修改某一结构体变量的值。

 

C语言副本机制

标签:pre   返回值   res   print   sum   通过   stat   code   http   

原文地址:https://www.cnblogs.com/ligei/p/11363626.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!