【发布时间】:2021-02-23 15:47:54
【问题描述】:
我有一个名为 printNums 的方法,我想打印从 1 到 10 的整数。对于我的分配,我应该分配一个 int 指针,设置它,作为 void* 点传递给我的函数,然后在函数内部,对其进行强制转换,尊重它并在计数器的每次迭代之前打印出该整数。
但是,在*((int*)ptr) 之后我不断收到分段错误,我不太清楚为什么。任何帮助将不胜感激。
这是我的代码:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void* printNums(void *ptr);
int main(int argc, char **argv)
{
int *ptr = (int*)malloc(sizeof(int));
ptr = 0;
printNums(ptr);
return 0;
}
void* printNums(void *ptr){
int i = 0;
for (i = 0; i <= 10; i++){
*((int*)ptr) = i;
printf("%d\n", *((int*)ptr));
}
}
【问题讨论】:
-
printNums应该返回一个值(void*类型) -
ptr = 0;- 在这里您将新分配的指针设置为NULL -
int *ptr = (int*)malloc(sizeof(int))只为一个int分配内存,这可能不是您想要的。 -
printNums打印 10 次相同的数字。这是你的意图吗?也许你应该告诉我们程序应该做什么。
标签: c