美文网首页
C语言值传递与址传递

C语言值传递与址传递

作者: 玉宾 | 来源:发表于2020-08-10 21:09 被阅读0次

高考过后,你不用告诉我你考多少分,悲喜之后也不要告诉我你志愿填了哪里,只要告诉我最后去了哪?我坐火车或飞机要多久,在此停留能否蹭口饭吃,一本二本我真的分不清楚,我只知道你是我朋友。。。

----  网易云热评

一、值传递,形参的修改不会影响到实参

#include <stdio.h>

void jiaohuan(int a,int b) {

       int tmp = a;

       a = b;

       b = tmp;

       printf("a=%d,b=%d", a, b);

}

int main() {

       int m = 1;

       int n = 2;

       jiaohuan(m, n);

       printf("m=%d,n=%d", m, n);

       system("pause");

       return 0;

}

运行结果:

二、址传递,传递变量的地址

#include <stdio.h>

void jiaohuan(int *a,int *b) {

       int tmp = *a;

       *a = *b;

       *b = tmp;

}

int main() {

       int m = 1;

       int n = 2;

       jiaohuan(&m, &n);

       printf("m=%d,n=%d\n", m, n);

       system("pause");

       return 0;

}

运行结果:m=2,n=1

三、形参中的数组,不是数组,就是普通的指针

void aiyou(int a[])

void aiyou(int *a)

void aiyou(int a[10])

上面三个函数的参数都表示形参是一个数组

void aiyou(char *p[])

void aiyou(char ** p)

void aiyou(char *p[10])

上面三个函数的参数都表示形参是一个指针数组

四、查找字符串出现的次数

#include <stdio.h>

int main() {

       char* p = "13aiyou4565aiyou870aiyou867456aiyou2345";

       int i = 0;//计数器

       char* tmp = NULL;

       while (1) {

//查找匹配的字符串,找打返回地址

              tmp = strstr(p, "aiyou");

              if (tmp==NULL)

              {

                     break;//跳出循环

              }

              else

              {

                     i++;//找到后+1;

                     p = tmp + strlen("aiyou");//找到后,指针从下一处开始找

              }

       }

       printf("aiyou出现的次数:%d\n", i);

       system("pause");

       return 0;

}

运行结果:aiyou出现的次数:4

五、去首尾空

#include <stdio.h>

#include <string.h>

int main() {

       char* p = "         aiyoubucuo        ";

       printf("源数据:%s\n", p);

       char* s = p;//首元素地址

char* w = p + strlen(p) - 1;//尾元素地址

       //去首空,首地址不为且没有到尾地址

       while (*s==' '&&*s!='\0')

       {

              s++;

       }

       //去尾空,尾地址不为空且没有到首地址

       while (*w==' '&& *w!=p)

       {

              w--;

       }

       int n = w - s + 1;

       printf("去首尾空后的长度:%d\n", n);

       char a[100] = "aaaaaaaaaaaaaaaaaaa";

       strncpy_s(a, strlen(a), s,n);

              a[n] = 0;

       printf("去首尾空结果:%s\n", a);

       system("pause");

       return 0;

}

欢迎关注公众号:顺便编点程

相关文章

  • C语言值传递与址传递

    高考过后,你不用告诉我你考多少分,悲喜之后也不要告诉我你志愿填了哪里,只要告诉我最后去了哪?我坐火车或飞机要多久,...

  • java 传址

    在java中,都是值传递,没有址传递。要想做到址传递:对象传递为传址,基本类型为传值。引用传递,是通过改变对象的属...

  • Objective-C中的值传递和引用传递

    值传递::Pass By Value引用传递:Pass By Reference 一、C语言中的参数传递 1、传值...

  • java中的参数传递(只有值传递没有引用传递)

    Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递)。所以在java方法中改变参数的值是不会改变原...

  • 解决java中的参数传递问题

    Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递)。所以在java方法中改变参数的值是不会改变原...

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • Java中的值传递和"引用"传递

    引言 学习过C语言的同学都很清楚在c中调用方法的参数有值传递和引用传递两种方式。关于值传递和引用传递网上有许多的博...

  • 笔记3

    1函数调用的传值方式:1)按值传递2)地址传递 3)引用传递=指针传递的简化2函数重载c语言中函数的名称是可以--...

  • C语言 函数传参的理解

    C语言有点东西 不像JAVA 不需要复杂考虑参数传递问题 java就两种参数传递方式 值传递AND引用传递...

  • Python初学者笔记(八):函数参数的值传递和引用传递

    函数参数的值传递和引用传递 像我们最熟悉的 C 语言,再写函数参数的同时需要规定函数参数到底是值传递还是引用传递。...

网友评论

      本文标题:C语言值传递与址传递

      本文链接:https://www.haomeiwen.com/subject/aoksdktx.html