我正在研究队列数据结构.结构是:
struct queue
{
char array[MAX_LENGTH][8];
int back;
};
Run Code Online (Sandbox Code Playgroud)
它旨在存储7个字符长的MAX_LENGTH字符串列表.我希望推出一个包含8个字符的1D数组(好吧,7个字符和\ 0,就像结构中的数组一样).
我有这个推送代码:
void push (struct queue *q, char s[]){
q->array[q->back] = s;
}
Run Code Online (Sandbox Code Playgroud)
我认为这可能有用,但显然没有.在cl(.net的C/C++)编译器中,我收到以下错误:
2.c(29):错误C2106:'=':左操作数必须是l值
gcc在同一行返回一个类似的错误(但我忘记了,此刻无法访问gcc).
我对结构和指针都很新,所以可能有一些非常明显我没做的事情.感谢任何帮助:)
我是C的新手,我想知道如何访问放置在结构中的结构内部的元素.
struct profile_t
{
unsigned char length;
unsigned char type;
unsigned char *data;
};
typedef struct profile_datagram_t
{
unsigned char src[4];
unsigned char dst[4];
unsigned char ver;
unsigned char n;
struct profile_t profiles[MAXPROFILES];
} header;
Run Code Online (Sandbox Code Playgroud)
如何访问profile_t中的元素?
我的问题:当一个结构有c-tor时,为什么我不能静态初始化它?
我的编译器声称:
type `myStruct' must be initialized by constructor, not by `{...}'
Run Code Online (Sandbox Code Playgroud)
这是为什么 ?我正在使用gcc版本3.4.4(cygming special,gdc 0.12,使用dmd 0.125)
为了说明,这是struct编译器拒绝的.
struct myStruct
{
int a;
double b;
myStruct() { a= 0; b = 0.0; }
}
void main()
{
myStruct ms = {7, 7.7}; // Now this compiler does not accept.
}
Run Code Online (Sandbox Code Playgroud) 我想知道为什么我们可以通过值将结构传递给C函数,但我们永远不能对数组(通过地址传递)做同样的事情.
当我学习C时,他们告诉我数组会消耗很多堆栈,因此不希望按值传递它们.
但似乎结构通常(如果不总是)大于数组并且是更复杂的数据结构,所以这个解释现在对我来说没有意义!
任何人都可以帮助尽可能多的细节吗?
我有一个关于'##'的问题,用于使用解除引用运算符进行预处理器粘贴.谁能告诉我为什么下面的代码不能编译?
typedef struct
{
char data;
} MY_STRUCT;
MY_STRUCT My_Instance;
MY_STRUCT* My_PInstance;
#if 1
#define GET_MEMBER(membername) (My_PInstance->##membername)
#else
#define GET_MEMBER(membername) (My_Instance.##membername)
#endif
Run Code Online (Sandbox Code Playgroud)
然后我打电话给:
char value = GET_MEMBER(data); // Where My_PInstance is properly instantiated.
Run Code Online (Sandbox Code Playgroud)
我收到编译错误.
error: pasting "->" and "data" does not give a valid preprocessing token
Run Code Online (Sandbox Code Playgroud) 正如我从Roger Pressman的书中读到的软件工程附录1那样
两个类之间的关联意味着它们之间存在结构关系
结构关系意味着什么?
我对C中的结构有一个简单的问题.
我有这个结构和这个功能:
struct Vec2
{
int x;
int y;
}
void draw(Sprite* sprite, struct Vec2 pos);
Run Code Online (Sandbox Code Playgroud)
无论如何在c ++中做相同的操作?
draw(foo, new Vec2(10, 20));
Run Code Online (Sandbox Code Playgroud)
我试过这个,但编译器不同意我的意见:
draw(foo, {10, 20} );
Run Code Online (Sandbox Code Playgroud)
有人帮忙吗?
编辑:我在C++模式下使用Visual C++ 2008 Express,但对于我的学校,我必须使用C语言编写,而不是C++
从Python 2到Python 3的一个基本变化就是创建print一个函数 - 对我而言,它的结构非常合理.为什么raise和del语句也不起作用?特别是在raise它似乎正在采取争论并用它做某事的情况下,就像一个函数一样.
我试图使用令牌粘贴在C中定义一些简单的通用结构.其中一个例子如下: -
#define VECTOR(type, dimension, name) \
typedef struct Vector_##type{ \
type data[##dimension##]; \
int dim = dimension; \
}##name##;
VECTOR(int, 3, Vector3i)
Run Code Online (Sandbox Code Playgroud)
根据我的理解,由于嵌入了参数,第2和第5行必须进行标记粘贴,而出于相反的原因,第4行不需要标记粘贴.
但是,由于上面的简单示例导致以下错误,我似乎在我的理解中遗漏了一些内容: -
pasting formed '[3', an invalid preprocessing token VECTOR(int, 3, Vector3i)
pasting formed '3]', an invalid preprocessing token VECTOR(int, 3, Vector3i)
expected member name or ';' after declaration specifiers
VECTOR(int, 3, Vector3i)
~~~~~~~~~~~~^~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
鉴于上述错误,我错过了什么,以及在纯C中定义通用结构的适当方法是什么?
我刚刚在Gcc编译器中试验了以下程序.我想知道,申报循环中的结构并在GCC中正常工作.
#include <iostream>
int main()
{
int i = 0;
for(struct st{ int a{9}; }t; i<3; i++)
std::cout<<t.a<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)
那么,在for循环中声明结构是否合法?
structure ×10
c ×5
function ×3
arrays ×2
c++ ×2
associations ×1
constructor ×1
declaration ×1
dereference ×1
for-loop ×1
pointers ×1
python ×1
python-3.x ×1
relationship ×1
static ×1
struct ×1
token ×1
uml ×1