• 函数的值传递和引用传递


     1 #include "stdafx.h"
     2 #include <stdlib.h>
     3 
     4 int Exchange(int  *px,int *py)
     5 {
     6     int temp = *px;
     7     *px = *py;
     8     *py = temp;
     9     printf("*px=%d,
    *py=%d
    ",*px,*py);
    10     return 0 ;
    11 }
    12 int _tmain(int argc, _TCHAR* argv[])
    13 {
    14     int a = 8;
    15     int b = 46;
    16     Exchange(&a,&b);
    17     printf("a=%d,
    b=%d
    ",a,b);
    18     
    19     system("pause");
    20     return 0;
    21 }

    或者也可以如下方式进行引用传递:

     1 #include "stdafx.h"
     2 #include <stdlib.h>
     3 
     4 int Exchange(int  &x,int &y)
     5 {
     6     int temp = x;
     7     x = y;
     8     y = temp;
     9     printf("x=%d,
    y=%d
    ",x,y);
    10     return 0 ;
    11 }
    12 int _tmain(int argc, _TCHAR* argv[])
    13 {
    14     int a = 8;
    15     int b = 46;
    16     Exchange(a,b);
    17     printf("a=%d,
    b=%d
    ",a,b);
    18     
    19     system("pause");
    20     return 0;
    21 }

    下面代码就是值传递的例子:

     1 #include "stdafx.h"
     2 #include <stdlib.h>
     3 
     4 int Exchange(int  x,int y)
     5 {
     6     int temp = x;
     7     x = y;
     8     y = temp;
     9     printf("x=%d,
    y=%d
    ",x,y);
    10     return 0 ;
    11 }
    12 int _tmain(int argc, _TCHAR* argv[])
    13 {
    14     int a = 8;
    15     int b = 46;
    16     Exchange(a,b);
    17     printf("a=%d,
    b=%d
    ",a,b);
    18     
    19     system("pause");
    20     return 0;
    21 }

    所以,与引用传递相对,值传递的代码格式只有一处是不同的,即在定义处:Exchange(int &x, int &y);在调用处都是一样的。

          值传递的函数里操作的不是a,b 变量本身,只是将a,b 值赋给了x,y 函数里操作
    的只是x,y 变量而不是a,b,显示a,b 的值不会被Exchange 函数所修改。
          引用传递Exchange(a,b)函数里是用a,b 分别代替了x,y。函数里操作的就是a,b
    变量的本身,因此a,b 的值可在函数里被修改的。

    指针的指针:

     1 //查找一个字符在字符串中的位置
     2 
     3 #include "stdafx.h"
     4 #include<stdlib.h>
     5 #include<string.h>
     6 
     7 void find(char array[],char search,char **ppa)
     8 {
     9     int i;
    10     for(i = 0; *(array+1) != ''; i++)
    11     {
    12         if(*(array+i) == search)
    13         {
    14             *ppa = array + i;
    15                 break;
    16         }
    17         else if(*(array+i)==0)
    18         {
    19             *ppa=0;
    20             break;
    21         }
    22     }
    23 }
    24 int _tmain(int argc, _TCHAR* argv[])
    25 {
    26     char str[]={"afsdfsdfdf"}; /*待查找的字符串*/
    27     char a ='d';
    28     char *p = 0;0;//如果查找到后指针p 将指向字符串中查找到的第一个字符的地址
    29 
    30     find(str,a,&p);
    31     if(0 == p)
    32     {
    33         printf("没找到该字母!
    ");
    34     }
    35     else
    36     {
    37         printf("找到了,p=%d
    ",p);
    38     }
    39     system("pause");
    40     return 0; 
    41 }
    View Code
  • 相关阅读:
    C语言调试示例
    Tiff格式详解(转载)
    指纹
    twitter
    baidu
    NoSuchMethodError随记
    IllegalArgumentException异常
    Springboot2.2.9接入阿里云ES(带高亮查询)
    阿里云ECS安装cnpm
    阿里云ECS安装docker
  • 原文地址:https://www.cnblogs.com/chensup/p/5806541.html
Copyright © 2020-2023  润新知