程序一:交换值

#include

void swap(int *x , int *y){

int *temp;

temp = x;

x = y;

y = temp;

}

void main(){

int a = 1;

int b = 2;

swap(&a , &b);

}

对于程序一,在它运行完成之后,a,b的值并没有发生变化。

原因是swap函数里面的x,y都是形参,函数里面对形参的地址进行了交换,这并没有交换main函数中的a,b这两个变量指向的地址。

程序二:交换值

#include

void swap(int *x , int *y){

int *temp;

temp = x;

x = y;

y = temp;

}

void main(){

int *a = 1;

int *b = 2;

swap(a , b);

}

程序二也不能交换a,b所指向的值,原因类似于程序一的错误原因。

程序三:交换值

#include

void swap(int x , int y){

int temp;

temp = x;

x = y;

y = temp;

}

void main(){

int a = 1;

int b = 2;

swap(a , b);

}

程序三运行完之后,a,b的值也没有发生交换,是因为swap函数中的形参x,y发生了值的交换,而并不是main中实参的值交换。

程序四:交换字符串

#include

void swap(char **x , char **y){

char *temp;

temp = *x;

*x = *y;

*y = temp;

}

void main(){

char *a = "china";

char *b = "hello";

swap(&a , &b);

}

程序四可以交换两个字符串,其原理如下图所示:

程序五:交换字符串

#include

#include

void swap(char *x , char *y){

char temp[10];

strcpy(temp,x);

strcpy(x,y);

strcpy(y,temp);

}

void main(){

char a[10] = "china";

char b[10] = "hello";

swap(a , b);

}

程序五也可以交换两个字符串,运用到了strcpy函数。

c语言 void swap,C语言的swap函数的易错点相关推荐

  1. C语言 void 指针 - C语言零基础入门教程

    目录 一.指针简介 二.空指针 NULL 三.void 指针 四.重点总结 五.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.指针简介 ...

  2. C语言for循环语句及嵌套(误区,易错点要理解)

    目录 前言 例题1: 例题2: for循环中contiune的使用: 前言 大家好,相信刚学C语言的小白们,觉得for循环是比较好用的,但是有时候写for循环语句的程序时,写出来的代码结果,和自己想要 ...

  3. c语言void delayms,C语言题、谁帮我看看啊!!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #define uchar unsigned char #define uint unsigned int uchar code dey ...

  4. C语言 extern “C” - C语言零基础入门教程

    目录 一.__cplusplus 简介 二.__cplusplus 使用 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.__cplu ...

  5. C语言 #pragma once - C语言零基础入门教程

    目录 一.#pragmaonce 宏简介 二.#pragmaonce 与 #ifndef 使用 1.#ifndef 2.#pragmaonce 三.#pragmaonce 与 #ifndef 区别 1 ...

  6. C语言 野指针 - C语言零基础入门教程

    目录 一.简介 二.野指针产生的原因 1.指针变量未初始化 2.指针释放后之后未置空 三.避免野指针产生 1.初始化时置 NULL 2.释放时置 NULL 四.猜你喜欢 零基础 C/C++ 学习路线推 ...

  7. c语言中void指针,C 语言 void指针

    C 语言 void指针 到目前为止,我们已经研究了分配给指针的地址应该与指针声明中指定的类型相同. 例如,如果我们声明了int指针,则此int指针不能指向float变量或某种其他类型的变量,即它只能指 ...

  8. [转]C/C++语言void及void指针深层探索

    1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧. 2 ...

  9. c语言怎么让写的函数兼容int型和char型_既然C语言void指针是“万能指针”,那么malloc还需类型转换吗?...

    在C语言程序开发中,动态内存分配是不可避免的,而调用 malloc()/free() 库函数实现这一过程是方便的,事实上,在很多C语言程序中,malloc/free 库函数的使用相当频繁,它俩的C语言 ...

最新文章

  1. 有 Bug 不会调试 ? 这篇文章很详细 !
  2. 用UltraISO制作支持windows 7的U盘启动盘
  3. Windows 7使用MMC管理控制台“远程桌面”功能【转载】
  4. jvm系列(十):教你如何成为Java的OOM Killer
  5. JQ表单序列化变成 对象
  6. 开源协议神图介绍 MIT 与 Apache 等
  7. hadoop--Map Join
  8. php-fpm进程的用户组,PHP中的“进程”系列1——PHP-FPM模型
  9. JSONArray ja = JSONArray.fromObject(list);//特殊类 用于将list转化为JSON 数据并返回 out.print(ja);...
  10. 读大师的书 说自己的话——《传世经典书丛评注版》邀你来点评
  11. java arraylist对象_Java中ArrayList的对象引用问题
  12. 敏感词库快速添加到mysql数据库,并在页面使用方法过滤敏感词
  13. 股票交易接口申请方式有哪几种?
  14. XCTF_MOBILE15_人民的名义-抓捕赵德汉1-200
  15. SAP QM检验批常见问题及解决办法
  16. Android开发——Android中的二维码生成与扫描
  17. Mac OSX常用软件
  18. git master、origin master 与 origin/master 的区别
  19. c#代码实现打印机打印文件
  20. 快贴 - 跨平台的云剪贴板

热门文章

  1. 运维职场精英必须熟悉的武器库,yyds
  2. 从“自然村落”到“现代化城市”,零信任安全的演进
  3. java音频播放器代码_java音乐播放器实现代码
  4. Gradle 多环境、多渠道打包
  5. 各个大厂喜欢用的Hystrix到底有什么优点?
  6. 《Android 应用案例开发大全(第二版)》——2.1节案例背景及功能概述
  7. MTK TP input子系统笔记
  8. 成都拓嘉启远:拼多多回复率低与店铺有多大关系
  9. 捣鼓篇之— 正点原子DS100mini示波器拆解
  10. org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN with UUID