[英]Allocating space for pointers to struct
在另一個帖子鏈接中
我正在嘗試對結構執行相同的操作,但是我的sizeof運算符存在問題,因此在整數情況下,我這樣做:
size_t totalMem = rows * sizeof(int *) + rows * cols * sizeof(int));
在struct案例中,我這樣做是:
size_t totalMem = (rows * sizeof(struct TEST *)) + (rows * cols * sizeof(struct TEST));
但是我得到一個錯誤:sizeof的無效應用到結構TEST的不完整類型。
有什么想法嗎? 謝謝。
因為您將結構定義為
typedef struct { ... } TEST;
您應該始終將結構稱為TEST
,而不是struct TEST
,即使用
size_t totalMem = (rows * sizeof(TEST*)) + (rows * cols * sizeof(TEST));
要使用struct TEST
您需要實際命名結構,即
struct TEST { ... };
您可以同時允許
typedef struct TEST { ... } TEST;
#include <stdio.h>
#include <stdlib.h>
#include "C2_Assignment_5_Exercise_2_Driver.h"
作為我的size_t語句的一部分。 .h文件中的定義為:
#ifndef C2_ASSIGNMENT_5_EXERCISE_2_DRIVER_H
#define C2_ASSIGNMENT_5_EXERCISE_2_DRIVER_H
typedef struct
{
char charObj;
short shortObj;
long longObj;
double doubleObj;
} TEST;
#endif
更改:
typedef struct MYTEST
{
char charObj;
short shortObj;
long longObj;
double doubleObj;
} TEST;
和
size_t totalMem = (rows * sizeof(struct TEST *)) + (rows * cols * sizeof(struct TEST));
至
size_t totalMem = (rows * sizeof(struct MYTEST *)) + (rows * cols * sizeof(struct MYTEST));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.