这是我的代码......
#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 Fault
用gdb我得到了下面的,这似乎没有帮助太多..
(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) 这是我的代码..
#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)
但我不确定任何其他技术.首先,是否可以计算结构中元素的总数.请告诉我如何做到这一点. …
在实现我自己的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*)而不是任何其他类型的演员.我需要知道所述语法的确切含义.有人可以帮我理解这一个..?
提前致谢.