小编T.J*_*nes的帖子

指向结构的指针和指向数组的malloc内存的指针

我正在创建一个指向结构的指针,以在C中创建一个带malloc的动态数组,但是我得到一个调用struct数组的分段错误.这是我的代码的快速概述:

#include <stdio.h>

typedef struct {
    int test1;
    int test2;
    }testStruct;

int main() {
    testStruct **neato;

    neato = (testStruct **) malloc( sizeof(testStruct *) * 5);
    // Array of 5 for convience

    // any neato[x]->testy call results in segmentation fault.
    scanf("%d", &neato[0]->test1);    // Segmentation fault

    return 0;
    }
Run Code Online (Sandbox Code Playgroud)

我尝试了其他调用,如(*neato)[0] .test1,所有这些都会导致分段错误.这显然不是正确的方法,或者我的GNU编译器严重过时.

c malloc pointers

2
推荐指数
1
解决办法
210
查看次数

对于较大的switch case语句,最好将它们分开吗?

快问.例如,使用一些大约1000个选项的大型案例:哪种是"最佳"方法?我并不是特意想要直接获得更快的结果.

switch (foo) {
    case 0: 
        // code ...
        break; 

    // One, two, skip a few...

    case 1000:
        // code ...
}
Run Code Online (Sandbox Code Playgroud)

或者分裂可能结果的东西,以便它可以快速找到正确的案例陈述.类似的:

if (foo < 101) {
    if (foo < 51)
        switch (foo) {}
    else
        switch (foo) {}
} else if (foo > 100 && foo < 201) {

// skipped for convenience 

} else if (foo > 900) {
    if (foo < 951)
        switch (foo) {}
    else
        switch (foo) {}
}
Run Code Online (Sandbox Code Playgroud)

我想第二种方法对于较大的数字要快得多,但第一种方法似乎也可以轻松通过它,因为它不是经常检查语句.这些方法中有一种不赞成还是有更好的方法?这是针对C的,但我有兴趣知道它与其他语言的一致性.谢谢!

c performance

2
推荐指数
1
解决办法
832
查看次数

标签 统计

c ×2

malloc ×1

performance ×1

pointers ×1