[英]How to pass struct as argument
我正在編寫一段 C 代碼,我應該使用一個包含一個函數的靜態庫。 我有一個頭文件,其中包含一個typedef
結構,我應該將其用作輸入參數。
我對函數的理解是,我創建了一個在頭文件中定義的數據類型的結構,並將其作為指向函數的指針,函數將填充該結構。 另外兩個參數是data
和strlen(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;
}
您需要為您的函數傳遞結構的地址。
myStructure
是struct 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.