gpt4 book ai didi

c - 为什么C程序出现段错误?

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

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

struct keyVal
{
int key;
int val;
};

int main()
{

struct keyVal *arr[5];
int i;
for(i=0;i<5;i++)
printf("\n : %p %p ",&arr[i][0].val,&arr[i]);
printf("\n\n");
printf("\n : %d %d ",arr[0][0].val,arr[0]->val);
printf("\n\n");

for(i=0;i<5;i++)
printf("\n : %d %d ",arr[i][0].val,arr[i]->val);
printf("\n\n");

return 0;
}

首先,for( ; ; ); 将从 arr[0][0] 生成相同的 %p %p >arr[4][0]arr[0]arr[4],这意味着 arr[i][0] = = arr[i] 其中 i = 0,1,2,3,4

第二个 for( ; ; ); 应该打印 arr[i][0].key 的值(垃圾值) (arr[i]-> key )。

我们可以通过以下方式访问 key :

arr[i][0].keyarr[i]->key 其中 i = 0,1,2,3,4.

最佳答案

您使用了 5 个指向 keyVal 结构的指针变量,但未为其分配内存,这就是它遇到段错误的原因。使用malloc分配内存然后使用。

关于c - 为什么C程序出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39493039/

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