我正在尝试从 main 访问一个带有指向整数的指针的结构。但是程序崩溃了。它需要使用“std=c99”选项构建,因为它是测试中的要求。
代码如下:
#include <stdio.h>
#include <malloc.h>
struct Results{
int *A;
int N;
};
struct Results solution(int A[], int N, int K) {
struct Results result;
// write your code in C99 (gcc 4.8.2)
int* T = (int*) malloc(N*sizeof(int));
result.A = A;
result.N = N;
int count = 0;
while(count < K)
{
for(int i = 0; i < N; i++)
{
if(i > 0)
{
T[i] = A[i-1];
}
else
{
T[0] = A[N-1];
}
}
count++;
for(int i = 0; i < N; i++)
{
A[i] = T[i];
}
};
for(int i = 0;i < N; i++)
{
A[i] = T[i];
}
return result;
}
struct Results solution(int A[], int N, int K);
void main()
{
int B[5] = {3,8,9,7,6};
struct Results st;
solution(B,sizeof(B),1);
}
问题在于: “解决方案(B,sizeof(B),1);” 我做错了什么?
请帮忙。
最佳答案
你看到 sizeof(B)
会给出 B
中元素的数量乘以 int
的大小,使用 sizeof (B)/sizeof(B[0])
代替。
关于c - 尝试访问结构时出现段错误;编译选项 - gcc -std=c99,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36121473/