假设我想定义一个表示向量长度的结构及其值,如下所示:
struct Vector{
double* x;
int n;
};
Run Code Online (Sandbox Code Playgroud)
现在,假设我想定义一个向量y并为其分配内存.
struct Vector *y = (struct Vector*)malloc(sizeof(struct Vector));
Run Code Online (Sandbox Code Playgroud)
我在互联网上的搜索显示我应该分别为x分配内存.
y->x = (double*)malloc(10*sizeof(double));
Run Code Online (Sandbox Code Playgroud)
但是,似乎我为y-> x分配内存两次,一次为y分配内存,另一种为y-> x分配内存,这似乎浪费了内存.如果让我知道编译器真正做了什么以及初始化y和y-> x的正确方法,我们非常感激.
提前致谢.
我是嵌入式的新手,我对"平台"这个词感到困惑,是否指定了"主板"或"操作系统"?例如,有些人说,"我正在使用Windows平台",有些人说"我正在使用的平台是Raspberry Pi"等.我知道这对很多人来说是一个愚蠢或愚蠢的问题,但如果你需要阻止这个问题,在一些答案之后,请善待它.
任何人都可以解释什么是C中的类型惩罚,并通过简单的示例程序演示何时出现此类问题?
我在许多网站(甚至维基)都进行了搜索,但即便如此,我也无法理解.