小编Hir*_*dya的帖子

嵌套结构的指针

这是我的代码......

#include <stdio.h>

struct one
{
    struct two
    {
            int r;
    }*b;
}*a;

void main()
{
    //struct two *new = &(*a).b;
    //new->r = 10;
    //printf("Value: %d", new->r);
    a = malloc(sizeof(struct one));
    //b = malloc(sizeof(struct two));
    (a->b)->r = 10;
    printf("Value: %d", (a->b)->r);
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

我在这里尝试的是,将结构定义为结构.现在两个对象都应该是指针.我想设置值,r然后显示它.

我得到它的唯一的事情Segmentation Faultgdb我得到了下面的,这似乎没有帮助太多..

(gdb) run
Starting program: /home/sujal.p/structtest/main

Program received signal SIGSEGV, Segmentation fault.
0x08048435 in main ()
Run Code Online (Sandbox Code Playgroud)

我想知道如何执行上面提到的操作以及为什么这个东西会出现Segmentation错误.我已经尝试了一些网站上可用的方法,包括Stackoverflow的一些问题.

评论的行是我试图实现目标的失败,但失败了同样的错误.

编辑后尝试下面提到的技术..

void main()
{
    //struct two *new = &(*a).b;
    //new->r …
Run Code Online (Sandbox Code Playgroud)

c gcc struct pointers

3
推荐指数
1
解决办法
4370
查看次数

如何获取结构中的元素总数

这是我的代码..

#include <stdio.h>

struct new {
    unsigned short b0 = 0;
    unsigned short b1 = 0;
    unsigned short b2 = 0;
    unsigned short b3 = 0;
    unsigned short b4 = 0;
    unsigned short b5 = 0;
    unsigned short b6 = 0;
    unsigned short b7 = 0;
};

int main()
{
    printf("Bit Field Example\n");
    struct new b; //Seems wrong to me
    int result = sizeof(b)/sizeof(*b); //Seems wrong to me
    printf("Size: %d\n", result);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用linux机器来编译提到的代码.我知道下面的行是错误的..

int result = sizeof(b)/sizeof(*b);
Run Code Online (Sandbox Code Playgroud)

但我不确定任何其他技术.首先,是否可以计算结构中元素的总数.请告诉我如何做到这一点. …

c struct

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

为什么这个指针被强制转换为char而不是其他任何?

在实现我自己的sizeof运算符时,我遇到了一个例子,如下所述.

#define my_sizeof(type) (char *)(&type+1)-(char*)(&type)
int main()
{
    double x;
    printf("%d", my_sizeof(x));
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我不确定他们为什么在#define中使用(char*)而不是任何其他类型的演员.我需要知道所述语法的确切含义.有人可以帮我理解这一个..?

提前致谢.

c

-1
推荐指数
1
解决办法
174
查看次数

标签 统计

c ×3

struct ×2

gcc ×1

pointers ×1