指针复习-交换二个数

# include<stdio.h>

//重点理解:1.指针:变量的地址。指针变量:存放地址的变量。

void exchange_1(int a,int b)//只能在此函数实现变量交换,交换后的值不能返回到main函数中

{

int t;

t = a;

a = b;

b = t;

}

void exchange_2(int* a,int* b)//此函数只是交换了存放a,b地址的变量中的值。

{

int * t;//a,b表示a,b变量的地址

t = a;

a = b;

b = t;

}

void exchange_3(int* a,int* b)//此函数交换了a,b二个地址对应的的变量中的的值。

{

int  t;

t = *a;//*a表示地址为a的的变量中的值。

*a = *b;

*b = t;

}

int main(void)

{

int a = 3;

int b = 5;

//exchange_1(a,b);

//exchange_2(&a, &b);

exchange_3(&a,&b);

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

return 0;

}

时间: 2025-01-07 19:56:18

指针复习-交换二个数的相关文章

[c]不用第三个数,去交换二个数的位置

int a = 10; int b = 20; 第一种方法: a = a + b; b = a - b; a = a - b; 第二种方法: a = a ^ b; b = a ^ b; a = a ^ b; 第三种方法 a = (a + b) - (b = a); 版权声明:本文为博主原创文章,未经博主允许不得转载.

白话经典算法系列之四 直接选择排序及交换二个数据的正确实现

分类: 白话经典算法系列 2011-08-09 11:15 16682人阅读 评论(29) 收藏 举报 算法面试c 直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后. 设数组为a[0…n-1]. 1.      初始时,数组全为无序区为a[0..n-1].令i=0 2.      在无序区a[i…n-1]中选取一个最小的元素,将其与a[i]交

直接选择排序及交换二个数据的正确实现

文章参考地址:http://blog.csdn.net/morewindows/article/details/6671824 直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接插入排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后. 设数组为a[0-n-1]. 1.      初始时,数组全为无序区为a[0..n-1].令i=0 2.      在无序区a[i-n-1]中选取一个最小的元素,将其

用多种方法交换两个数的值

今天上了C语言课,老师讲了有关交换两个数的问题.课后,经过自己的思考和总结,我得出了以下几种方法.虽然这个问题的方法还有很多,但我目前只了解到了这五种方法,希望大家多提建议和意见.其他的方法待补充奥... 法一: 大家最容易想的方法,首先设一个临时变量,利用临时变量将两个数交换.下面是实现它的代码: #include<stdio.h> int main() {   int num1=5,num2=10,tmp=0;   printf("before:\n");   prin

用swap 交换两个数

#include<stdio.h>main(){ void swap(int *p1,int *p2);//定义swap函数,用于交换.  int *p,*q; int a,b; //定义两个指针变量和两个数a和b  printf("请输入两个数:");  scanf("%d,%d",&a,&b);//输入两个数  p=&a; q=&b;//将p和q分别指向a和b的地址  swap(p,q);//调用swap函数对p和q执

void swap(int a,int b)这样一个函数原型能交换两个数么?可以!!

昨天在指导别人指针的时候,突发奇想想到这么一道题,我觉得挺有意思的,发给大家看看,虽然不是什么很高级的技术,但是是个很有趣的思路..... 题目就是: void swap(int a,int b)这个函数原型,不能用全局变量与静态变量的情况下,怎么实现交换两个数? 如果你有兴趣可以思考一下,如果没兴趣就直接看下面的答案吧. --------------------------------------------------华丽的分割线-------------------------------

交换两个数的C语言程序

今天是第一次接触C语言,之前有一点C++的基础,所以学习起来还挺顺手的.下来分享一下写的一个关于交换两个数的C语言代码.可能这些还存在很大的问题,希望大家可以指正. 方法一:允许创建第三个变量 #include<stdio.h> int main() { int a=10; int b=20; int tmp=a; a=b; b=tmp; printf("%d\n",a); printf("%d\n",b); return 0; } 方法二:不创建新的变

20140806 交换两个数 extern &ldquo;C&rdquo;用法

1.交换两个数 方法1.a+b有可能越界 a=a+b; b=a-b; a=a-b; 方法二.不会越界 a=a^b b=a^b; a=a^b;   2.extern "C"用法 ( 自己总结: 1.C++语言引用C语言函数时(void fun(int a,int b),void fun(int a,float b)),由于C++有重载功能,编译器按C++的方式编译该函数后产生的名字五花八门(_fun_int_int和_fun_int_float). 2.而被调用的c语言函数库,或者.c文

c语言函数实现交换两个数的值

代码: 1 #include <stdio.h> 2 3 void swap(int x,int y) 4 { 5 int temp; 6 7 temp = x; 8 x = y; 9 y = temp; 10 printf("In swap: x = %d,y = %d\n",x,y); 11 } 12 13 void swap_with_pt(int * x,int * y) 14 { 15 int temp; 16 17 temp = *x; 18 *x = *y;