c - 使用指针交换 int 数组值

标签 c pointers swap

我应该使用指针来交换数组中的整数。它在没有错误或警告的情况下编译并运行但不交换整数。任何建议都会有帮助!!!

这是测试人员:

#import <stdio.h>

void swap( int ary[] );

int main(  int argc, char*argv[] )
{
    int ary[] = { 25, 50 };
    printf( "The array values are: %i and %i \n", ary[0], ary[1] );
    swap( ary );
    printf( "After swaping the values are: %i and %i \n", ary[0], ary[1] );

    return 0;
}

这是交换函数:

void swap( int ary[] )
{
    int temp = *ary;
    *ary = *(ary + 1);
    *ary = temp;
}

运行后显示如下:

The array values are: 25 and 50
After swaping the values are: 25 and 50

最佳答案

我不想破坏它,但它看起来更像是一个打字错误。

在你的交换函数中:

*ary = temp;

应该是:

*(ary + 1) = temp;

编辑:您有没有使用数组表示法的原因?我认为这样的事情更清楚一些:

int temp = ary[0];
ary[0] = ary[1];
ary[1] = temp;

关于c - 使用指针交换 int 数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1670821/

相关文章:

正确使用结构体指针

尝试打开 C 文件时出现 Clang 错误

c - 相对于函数开头的 __LINE__ 宏的等价物

C 指针、最小值和最大值

C - 从队列中存储的项目中检索变量

c++ - 为具有内部指针的对象实现 swap()

c++ - 字节交换方面的一般交换实现

java - 对两个 ArrayList 中的元素进行排序和交换 (Java)

结构指针地址比较不起作用

c - 传感器故障。更换 Arduino Wire 库时遇到问题