簡體   English   中英

為結構指針分配空間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM