小编jak*_*992的帖子

void swap(int*a,int*b)不使用数组

C编程的新手,以及尝试创建一个void函数来交换两个变量的值.当我希望交换两个整数变量的值时,以下函数可以正常工作,假设a = 11,b = 33,函数调用swap(&a,&b):

void swap(int *a, int *b) {
  *a += *b;
  *b = *a - *b;
  *a -= *b; 
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用数组的两个元素执行此操作时,它对交换(&a [0],&a [2])无法正常工作.但它确实可以使用以下功能:

void swap(int i, int j, int a[]) {
  int h = a[i];
  a[i] = a[j];
  a[j] = h;
}
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么第一个单变量工作而不是数组元素?当然有一个非常好的解释,我在这里失踪.欢迎所有帮助,谢谢!

这是完整的程序:

#include <stdio.h>
#include <stdlib.h>


void swap(int *a, int *b) {
  *a += *b;
  *b = *a - *b;
  *a -= *b; 
}

void selectionSort(int a[], int len) {
  int i, j, min;
  for …
Run Code Online (Sandbox Code Playgroud)

c arrays swap pointers

3
推荐指数
1
解决办法
3962
查看次数

标签 统计

arrays ×1

c ×1

pointers ×1

swap ×1