gpt4 book ai didi

c - 函数有 malloc 语法错误?

转载 作者:行者123 更新时间:2023-11-30 19:44:27 24 4
gpt4 key购买 nike

我是使用指针的新手,我不知道为什么这不起作用。如果我在 scan 函数中进行打印,它可以工作,但它必须在单独的函数中。

#include <stdio.h>
#include <stdlib.h>
int scan(int n, int *buffer)
{
int i;
printf("nr of elements:\n");
scanf("%d", &n);
//int *buffer, i=0;
// *buffer=(int*)malloc((*n) * sizeof(int));
buffer = malloc((n + 1) * sizeof(*buffer));
for(i=0; i<n; i++){
buffer[i]=i+1;
printf ("%d ", buffer[i]);}
printf ("\n-------------\n");
}

void print(int *n,int *buffer){
int i;
for(i=0; i<n; i++){
printf ("%d ", buffer[i]);}
}

int main()
{
int n,i, *buffer;
scan(&n, &buffer);
print(n, *buffer);

printf("i quit\n");
for(i=0; i<n; i++){
printf ("%d ", buffer[i]);
}
return 0;
}

最佳答案

它可以帮助使用(稍微)更具描述性的变量名称,以清楚地表明扫描中的“n”与打印中的“n”不同:

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

void scan(int *np, int **bufferp)
{
int i;
printf("nr of elements:\n");
scanf("%d", np);

*bufferp = (int*)malloc(*np * sizeof(**bufferp));
for(i=0; i < *np; i++){
(*bufferp)[i] = i + 1;
printf ("%d ", (*bufferp)[i]);
}
printf ("\n-------------\n");
}

void print(int n, int *buffer){
int i;
for(i=0; i<n; i++){
printf ("%d ", buffer[i]);
}
printf("\n");
}

int main()
{
int n, i, *buffer;
/* pass references to n and buffer for scan to modify */
scan(&n, &buffer);
print(n, buffer);
return 0;
}

关于c - 函数有 malloc 语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28157609/

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