gpt4 book ai didi

C中按值调用函数

转载 作者:行者123 更新时间:2023-11-30 18:10:03 25 4
gpt4 key购买 nike

我对 C 语言不熟悉,我试图在 main 函数中调用函数“func”,但它给了我编译错误。我试图在谷歌中搜索与这种情况类似的例子,但仍然出现错误。

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

struct str {
int value;
uint32_t ptr_next;
};

void func(int arg, char* arr[]);

int main() {
int Arg;
char* Arr[1];

func(Arg, *Arr[1]);

return 0;
}

void func(int arg, char* arr[]) {
int list;

struct str r;

FILE* file = fopen(arr[1], "rb");

do {
list = fread(&r, sizeof(struct str), 1, file);

if (list > 0)
printf("%d ", r.value);

fseek(file, r.ptr_next, 0);

}

while ((r.ptr_next != 0) && (list > 0));
}

问题是如何在C语言中按值调用函数?

最佳答案

C 只支持按值调用函数,C++ 中增加了按引用调用,并使用 & 符号。

传递给函数的值是内存中的一个位置,一个指针。如果您想向该函数传递该内存位置的数据副本,您需要为其创建一个副本。

// Assuming that Arg and Arr are initialized.
char* Arr2[]; // Make a storage place for the char**.
Arr2 = malloc(Arg*sizeof(char*)); // Make the right number of char*s in it
for(int e=0; e<Arg; e++) { // For each elem in the main array:
Arr2[e]=malloc(sizeof(char)*strlen(Arr[e])); // Make space for the chars,
strcpy(Arr2[e],Arr[e]); // And copy them.
}
<小时/>

旁注

您尚未在 main 中初始化 ArgArr。我怀疑您可能指的是命令行参数。

int main(int Arg, char* Arr[])

关于C中按值调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59481144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com