请有人解释一下下面给出的c结构的前两个例子,以及它是如何工作的?
案件:1
struct vertex{
int info;
struct vertex * nextertex;
struct edge *firstEdge;}; //why no error as incompatible type for field firstEdge?
这个代码不会产生错误!我们在整个代码中没有结构边!!
案件:2
struct vertex{
int info;
struct vertex * nextertex;
struct edge *firstEdge;};
struct ed
我在我的数据结构类中,这让我很困惑。
我想这与指针属性有关,但在我的研究中,我没有找到任何真正的解释,知道为什么C允许这样做吗?
可运行代码:
#include <stdio.h>
#include <stdlib.h>
/* Declaring a typedef struct */
typedef struct{
int a;
char b[10];
}struct_one;
/* Declaring another structure, with an intentional wrong calling of the first struct
假设我们在C或C++中定义了两个结构(我在C和C++中得到了相同的结果,我认为规则是相同的,如果它们不是)。
一个具有不完整类型的值成员的:
struct abc{
int data;
struct nonexsitnow next; //error: field ‘next’ has incomplete type, makes sense since "struct nonexsitnow" hasn't been declared or defined.
};
和一个指针成员的不完全类型:
struct abc{
int data;
struct
为什么我们在自引用结构中使用指针?这是强制性的还是非强制性的?如果不是,在struct中有指向struct的指针与普通的struct定义相比有什么好处?
typedef struct _Struct {
struct _Struct* next; // do we really need this pointer?
} Struct;
我有两个包含不同数据的公共结构和一个包含这两个公共结构中任何一个的私有中间结构。我还具有一个函数,该函数解封中间结构,确定它包含哪个公共结构,并返回两个公共结构中的一个。
我面临的问题是最后一个函数的返回值。最简单的是,我以为我可以返回*struct{},但是我的IDE中一直存在类型不匹配的问题。
我很抱歉,发布的代码可能比必要的多,但我正在努力使其尽可能接近我正在编写的代码。
package main
import (
"encoding/json"
"errors"
)
// These vars are some errors I
我知道struct和struct之间的不同之处,因为前面有typedef关键字。引用是这样的:
struct myStruct{
int one;
int two;
};
vs
typedef struct{
int one;
int two;
}myStruct;
但这两种类型之间的区别是什么:
struct point {
int x;
int y;
};
vs
struct point {
int x;
int y;
} my_point;
再来一个:
typedef struct set_t{
int
当我将一个struct传递给一个函数时,我会得到一个错误:预期的‘struct’,但是参数的类型是‘struct’。为什么会发生这种情况?
#include <stdio.h>
#include <string.h>
struct book
{
int id;
char title[50];
};
int showBooks(struct book x);
int main()
{
struct book
{
int id;
char title[50];
};
struct boo
考虑以下C++代码:
struct A {};
struct A* b = (1 == 1) ? new struct A : new struct A;
MSVC接受这一点,但GCC和Clang不接受。我想了解哪一个标准是正确的,以及为什么.
Clang给出的错误是:
test.cpp:2:37: error: redefinition of 'A'
struct A* b = (1 == 1) ? new struct A : new struct A;
^
test.cpp:1:8: note: pr
下面的程序对我来说看起来还不错。但是我不能编译它。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
struct a
{
int i;
int j;
};
std::vector<a*> vecA;
a* pA = new a;
pA->i = 4;
pA->j = 9;
vecA.push_back(pA);
return