簡體   English   中英

如何將結構作為參數傳遞

[英]How to pass struct as argument

我正在編寫一段 C 代碼,我應該使用一個包含一個函數的靜態庫。 我有一個頭文件,其中包含一個typedef結構,我應該將其用作輸入參數。

我對函數的理解是,我創建了一個在頭文件中定義的數據類型的結構,並將其作為指向函數的指針,函數將填充該結構。 另外兩個參數是datastrlen(data)

我的問題是。 如何在我的.c文件中創建結構以及如何從中獲取數據?

這是我的 .h 文件

#include <stdint.h>
#include <stddef.h>
typedef struct
{
  uint8_t arrayA[2];
  uint8_t arrayB[16];
} structDefinition;

void getData(structDefinition* myStructure, void const* data, size_t dataSize);

這是我的 .c 文件

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "myHeader.h"

structDefinition myStructure;

int main()
{
    char data[5] = {'123AF'};
    size_t dataSize = 5;

    getData(*myStructure, *data, dataSize);
    printf(mySignature.arrayA);
    printf(mySignature.arrayB);
    return 0;
}

您需要為您的函數傳遞結構的地址。

myStructurestruct Definition類型的對象

現在通過

getData(&myStructure,data,dataSize);

data是一個char類型的數組,它可以傳遞給char *

請檢查字符數組初始化

char data[6] = "123AF";/* char array comes with a nul terminator */

和字符數組的長度可以從

size_t dataSize = strlen(data);

如果您想知道strlen()則不需要第三個參數。 因為你可以從傳遞的字符串中得到它。

這個定義

char data[5] = {'123AF'};

是錯的。 '123AF'是一個字符文字。它的值是實現定義的。 看來你的意思

char data[5] = { "123AF" };

其中"123AF"是字符串文字。

函數調用

getData(*myStructure, *data, dataSize);

也是錯的。 它必須看起來像

getData( &myStructure, data, dataSize );

這些輸出語句也可能是錯誤的,因為數組似乎可以包含不以零結尾的字符

printf(mySignature.arrayA);
printf(mySignature.arrayB);

要正確輸出這些數組,您需要查看函數getData的定義以確定如何分配數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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