c语言函数传递结构体指针,注意使用结构体指针给函数传递参数。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

为了增加参数调用的灵活性,可以利用结构体指针传递多个不同的参数进入C语言函数体。

最著名的例子就是用Win32API

HANDLE CreateThread(LPSECURITY_ATTRIBUTES

lpThreadAttributes,

DWORD dwStackSize,

LPTHREAD_START_ROUTINE

lpStartAddress,

LPVOID lpParameter,

DWORD dwCreationFlags,

LPDWORD lpThreadId);

函数来创建线程。

函数的返回值是一个线程句柄

LPSECURITY_ATTRIBUTES lpThreadAttributes一般设为NULL

DWORD dwStackSize 一般设为0

LPTHREAD_START_ROUTINE lpStartAddress 是一个函数指针,一般就是所要执行的函数名。(重要)

LPVOID lpParameter 无类型参数指针。一般用结构体指针传递参数。无参数时为NULL。(重要)

DWORD dwCreationFlags 线程执行模式:0(立即执行),CREATE_SUSPENDED(挂起)

LPDWORD lpThreadId 32位无符号整形指针。用来获取线程ID。

应用举例:

MultiThread3将演示如何传送一个指向结构体的指针参数。

建立一个基于对话框的工程MultiThread3,在对话框IDD_MULTITHREAD3_DIALOG中加入一个编辑框IDC_MILLISECOND,一个按钮IDC_START,标题为“开始” ,一个进度条IDC_PROGRESS1;

打开ClassWizard,为编辑框IDC_MILLISECOND添加int型变量m_nMilliSecond,为进度条IDC_PROGRESS1添加CProgressCtrl型变量m_ctrlProgress;

在MultiThread3Dlg.h文件中添加一个结构的定义:

struct threadInfo

{

UINT

nMilliSecond;

CProgressCtrl* pctrlProgress;

};

你可能感兴趣的:(c语言函数传递结构体指针)