尝试访问结构时的段错误;编译选项 - gcc -std = c99

时间:2016-03-21 00:41:33

标签: c gcc

我正在尝试从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);” 我做错了什么?

请帮忙。

1 个答案:

答案 0 :(得分:3)

您看到sizeof(B)会将B的元素数量设为int的倍数,而是使用sizeof(B) / sizeof(B[0])