gpt4 book ai didi

c - 为什么带有指针的c程序不起作用?

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

我正在学习c中的指针。
我在下面编写了这段代码,但它没有运行。
问题是什么?

#include<stdio.h>
#include<conio.h>

int main()
{
const int ARR_SIZE=5;
int *arr;
for(int i=0;i<ARR_SIZE;i++){
*(arr+i) = i*10;
}
for(int i=0;i<ARR_SIZE;i++){
printf("%d. Element is: %d\n",i+1,*(arr+i));
}
getch();
return 0;
}

最佳答案

int *arr;

只是一个指针,它的作用是指向另一个地址。它应该指向有效且足够的内存,以便您可以在该内存中写入一些内容。
要么,

  • 在本地存储上分配一个数组并将指针指向该数组或
  • 在堆上分配动态内存并将指针指向该内存。
<小时/>

解决方案 1:

int array[ARR_SIZE];
int *arr = &array;

解决方案 2:

int *arr = malloc(sizeof(int) * ARR_SIZE);
//...
//...
//Free the memory once done with usage
free(arr);
<小时/>

注意在解决方案 2 中,当您使用 malloc 分配内存时您必须通过调用 free 显式释放内存在 malloc 返回的地址上.
在解决方案 1 中,您不必显式释放任何内容,因为 array是一个本地/自动数组,当范围 { 时它会自动释放。 , }宣告结束。

关于c - 为什么带有指针的c程序不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14628256/

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