标签: struct

如何在C中检查变量是否属于某种类型(比较两种类型)?

在C(不是C++/C#)中,如何检查变量是否属于某种类型?

例如,像这样:

double doubleVar;
if( typeof(doubleVar) == double ) {
    printf("doubleVar is of type double!");
}
Run Code Online (Sandbox Code Playgroud)

或者更一般:我如何比较两种类型,以便compare(double1,double2)评估为true,compare(int,double)并将评估为false.我还想比较不同构图的结构.

基本上,我有一个函数,它对"struct a"和"struct b"类型的变量进行操作.我想用"struct a"变量做一件事,用"struct b"变量做另一件事.由于C不支持重载并且void指针丢失其类型信息,我需要检查类型.顺便说一句,typeof如果你不能比较类型,那么拥有一个算子会有什么意义呢?


对于我来说,sizeof方法似乎是一个实用的解决方案.谢谢你的帮助.我仍然觉得它有点奇怪,因为类型在编译时是已知的,但是如果我想象机器中的进程我可以看到,为什么信息不是按类型存储,而是按字节大小存储.除了地址之外,大小是唯一真正相关的东西.

c struct types

55
推荐指数
7
解决办法
14万
查看次数

C#struct new StructType()vs default(StructType)

说我有一个结构

public struct Foo
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

两者之间有什么区别吗?

Foo foo = new Foo();
Run Code Online (Sandbox Code Playgroud)

Foo foo = default(Foo);
Run Code Online (Sandbox Code Playgroud)

c# struct

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

如何在Golang结构中设置和获取字段?

创建这样的结构后:

type Foo struct {
   name string        

}
func (f Foo) SetName(name string){
    f.name=name
}

func (f Foo) GetName string (){
   return f.name
}
Run Code Online (Sandbox Code Playgroud)

如何创建Foo的新实例并设置并获取名称?我尝试了以下方法:

p:=new(Foo)
p.SetName("Abc")
name:=p.GetName()
fmt.Println(name)
Run Code Online (Sandbox Code Playgroud)

没有打印,因为名称是空的.那么如何设置并获取结构中的字段?

struct get set go

54
推荐指数
3
解决办法
8万
查看次数

`struct X typedef`与`typedef struct X`的含义是什么?

我在现有代码库中有以下(工作)代码,用于C和C++之间共享的包含文件,在MSVC(2010)和Windows DDK上编译:

struct X {
    USHORT x;
} typedef X, *PX;
Run Code Online (Sandbox Code Playgroud)

和:

enum MY_ENUM {
    enum_item_1,
    enum_item_2 
} typedef MY_ENUM;
Run Code Online (Sandbox Code Playgroud)

据我所知,正确的定义应如下所示:

typedef struct {
    USHORT x;
} X, *PX;
Run Code Online (Sandbox Code Playgroud)

有下面的表格是否有任何目的?我错过了什么吗?

c c++ struct visual-studio-2010

54
推荐指数
5
解决办法
2483
查看次数

在C中,我如何选择是返回结构还是指向结构的指针?

最近在我的C肌肉上工作,并查看我一直在使用它的许多图书馆,这当然让我很好地了解了什么是好的做法.我没见过的一件事是一个返回结构的函数:

something_t make_something() { ... }
Run Code Online (Sandbox Code Playgroud)

从我所吸收的,这是"正确"的方式:

something_t *make_something() { ... }
void destroy_something(something_t *object) { ... }
Run Code Online (Sandbox Code Playgroud)

代码片段2中的体系结构比片段1更受欢迎.所以现在我问,为什么我会直接返回一个结构,就像在代码片段1中一样?当我在两种选择中做出选择时,我应该考虑哪些差异?

此外,该选项如何比较?

void make_something(something_t *object)
Run Code Online (Sandbox Code Playgroud)

c malloc struct pointers

54
推荐指数
4
解决办法
5310
查看次数

为什么有必要在结构上调用:this()来使用c#中的自动属性?

如果我使用如下自动属性在C#中定义结构:

public struct Address
{
    public Address(string line1, string line2, string city, string state, string zip)
    {
        Line1 = line1;
        Line2 = line2;
        City = city;
        State = state;
        Zip = zip;
    }

    public string Line1 { get; protected set; }
    public string Line2 { get; protected set; }
    public string City { get; protected set; }
    public string State { get; protected set; }
    public string Zip { get; protected set; }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试构建文件时,我收到编译错误说The 'this' object cannot be …

c# struct cil automatic-properties

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

结构体可以包含引用类型的字段

结构体是否包含引用类型的字段?如果可以,这是一个不好的做法?

c# struct reference-type

53
推荐指数
4
解决办法
2万
查看次数

C++类/结构成员的默认可见性

在C++中,为什么private是类的成员的默认可见性,但是对于结构是公共的?

c++ struct class member

53
推荐指数
2
解决办法
6万
查看次数

如何初始化struct?

我应该在我的任意结构中实现什么成员才能使以下任务成为可能:

public struct MyStruct {
   String s;
   Int length;
}

MyStruct myStruct = new MyStruct { s = "Hello", length = 5 };

// Now, I want the following code to set the 's' to "Lol" and the
// length to 3 (length of "Lol"). The second part should be done
// automatically.
myStruct = "Lol"; // Or myStruct = String("Lol");
Run Code Online (Sandbox Code Playgroud)

该怎么做?

c# struct initialization

53
推荐指数
3
解决办法
11万
查看次数

将一个结构复制到另一个结构

我知道我可以按成员复制结构成员,而不是我可以在结构上进行复制memcpy吗?

这样做是否明智?

在我的结构中,我有一个字符串也作为成员,我必须复制到具有相同成员的另一个结构.我怎么做?

c struct copy

53
推荐指数
5
解决办法
15万
查看次数