gpt4 book ai didi

c - 填充指向整数的指针数组

转载 作者:行者123 更新时间:2023-11-30 19:05:20 25 4
gpt4 key购买 nike

我写了一个简单的代码来创建一个指向整数的指针数组,然后用 scanf 填充它,而我正在使用 k&R 书来做这样的事情,这次我尝试使用 malloc 函数,但遇到了一个奇怪的问题这是代码:

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

#pragma warning(disable:4996)

int getArr(int **myArr);
void print(int *myArr, int n);

int main() {
int *myArr, n;
n = getArr(&myArr);
print(myArr, n);
return 0;
}

int getArr(int **myArr) {
int n;
scanf("%d", &n);
*myArr = (int *)malloc(n * sizeof(int));
for (int i = 0; i < n; i++)
scanf("%d", myArr+i); /* here if i put &(*myArr)[i] will work correctly */
return n;
}

void print(int *myArr, int n) {
while (n-- != 0) {
printf("%d\t", *myArr);
myArr += 1;
}
return;
}

但这两种类型的阅读输入有什么区别呢?

最佳答案

scanf 的 %d 格式说明符需要一个 int *

表达式 myArr+i 的类型 int ** 与预期不匹配,而 &(*myArr)[i​​](或 *myArr+i)具有正确的类型 int *

关于c - 填充指向整数的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50069071/

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