通过引用在C中传递指针

欧麦尔

具有C ++背景知识的C编码相当新。我有一个简单的程序,可以使用函数对数组进行排序。我需要通过引用将int指针传递给sort()函数,以便编译器不会创建副本,并且在函数调用后将对数组进行排序。如果我不传递引用,则函数结束后,数组将保持未排序状态。

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

void sort(int* & arr, int s, int e)
{
  int temp = 0, i, j;
  for (i=0;i<e;i++)
  {
    for (j=i+1;j<e;j++)
    {
        if (*arr[i]>*arr[j])
        {
            temp = *arr[i];
            *arr[i] = *arr[j];
            *arr[j] = temp;
        }
    }
  } 
}

int main()
{   
    int* arr = malloc(sizeof(int)*10);
    int i;

     for (i=0;i<10;i++)
         arr[i] = i+1;
     printf("Array before sorting:\n");
     for (i=0;i<10;i++)
         printf("%d  ", arr[i]);
     printf("\n");

     sort(arr, 0, 10);
     printf("Array after sorting:\n");
     for (i=0;i<10;i++)
         printf("%d  ", arr[i]);
     printf("\n");

     return 0;
}

我还知道c不允许在函数中进行引用传递,那么如何解决此问题?

dbush

在C语言中,通过传递指向所需类型的指针来模拟按引用传递。这意味着,如果您int *要传递给可以修改的函数(即,对的更改int *在调用者中可见),则该函数应接受int **

但是,在您的特定情况下,这不是您想要的。您只需要将一个传递int *给您的函数,然后该函数就可以通过[]运算符隐式取消引用并更改数组的元素。

void sort(int *arr, int s, int e)
{
  int temp = 0, i, j;
  for (i=0;i<e;i++)
  {
    for (j=i+1;j<e;j++)
    {
        if (arr[i]>arr[j])
        {
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
  } 
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过引用在C中传递struct,但修改不全

来自分类Dev

C ++通过引用在类中传递函数

来自分类Dev

指针并通过引用传递c ++

来自分类Dev

指针和引用在C中运行

来自分类Dev

在C中通过引用将指针传递给struct

来自分类Dev

在C ++中,通过指针传递比通过引用传递有好处吗?

来自分类Dev

通过引用传递指针

来自分类Dev

在C函数中通过指针传递结构数组以更新指针引用

来自分类Java

在Java中通过引用传递和在C中传递指针之间有什么区别?

来自分类Dev

为什么只使用在这个 C 程序的参数列表中声明的指针传递引用?

来自分类Dev

C ++通过const指针或对const指针的引用传递

来自分类Dev

在C ++中通过引用传递?

来自分类Dev

通过常量引用传递指针

来自分类Dev

通过引用或指针传递矢量

来自分类Dev

通过引用传递的指针对C ++中的getadrinfo有效

来自分类Dev

双指针vs通过引用指针传递

来自分类Dev

通过函数中的引用将const指针传递给const

来自分类Dev

在Delphi中通过引用传递的指针(从DLL导入函数)

来自分类Dev

c如何通过引用传递指针并增加值

来自分类Dev

是否可以强制通过引用或指针(C++)传递类?

来自分类Dev

在C中按指针传递/按引用传递

来自分类Dev

在C#中通过引用传递属性

来自分类Dev

在C中通过引用传递多维数组

来自分类Dev

在C ++中通过引用传递数组

来自分类Dev

通过C ++中的引用选项传递

来自分类Dev

在C ++中通过引用传递对象

来自分类Dev

C#中如何通过引用传递

来自分类Dev

在C中通过引用传递数组

来自分类Dev

在Google Apps脚本中通过引用在函数之间传递变量