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

标签 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);” 我做错了什么?

请帮忙。

最佳答案

你看到 sizeof(B) 会给出 B 中元素的数量乘以 int 的大小,使用 sizeof (B)/sizeof(B[0]) 代替。

关于c - 尝试访问结构时出现段错误;编译选项 - gcc -std=c99,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36121473/

相关文章:

c++ - 已排序数组的一部分被反转

C : How do I change bits in specific positions to specific values?

c++ - 使用reverse_iterator STL错误解密upper_bound

c - LD_INCLUDE_PATH 实际上做了什么吗?

c - 是否可以将汇编指令放入 CUDA 代码中?

c - 在 BST insert( ) 中使用 **

c - C 中 unsigned int 的行为

找不到gcc编译器

c++ - 为什么#define _LARGEFILE_SOURCE 会破坏这些函数指针?

macos - OS X 10.8 - 尝试执行 '/usr/bin/i686-apple-darwin11-gcc-4.2.1' 时出错 - 安装 json gem