??
1、项目包结构

array.h
#ifndef _ARRAY_H_
#define _ARRAY_H_
/************************************************************************/
/* 初始化数组 */
/************************************************************************/
extern void initArrayStoreSpace(int **arr,int n);
/************************************************************************/
/* 初始化数组内容 */
/************************************************************************/
extern void initArrayContent(int *arr, int n);
/************************************************************************/
/* 打印制定的数组 */
/************************************************************************/
extern void printArrayContent(int *arr,int n);
/************************************************************************/
/* */
/************************************************************************/
extern void freeArrayStoreSpace(int *arr);
#endif
arrayImpl.c
#include
#include
#include "array.h"
/************************************************************************/
/* 由于栈的大小有限,所以这个时候要在堆上开辟空间 */
/************************************************************************/
void initArrayStoreSpace(int **arr, int N)
{
if (N < 0)
{
printf("对不起,您要的数组大小不能小于0");
return;
}
else
{
*arr = (int *)malloc(sizeof(int)* N);
}
}
/************************************************************************/
/* 初始化数组的内容 */
/************************************************************************/
void initArrayContent(int *arr, int N)
{
int i = 0;
//注意,定义变量一定要指向要给NULL,不然会报错
int *px = arr;
for (px; px < arr + N; px++)
{
*px = ++i;
}
}
/************************************************************************/
/* 打印制定的数组,将数组的值赋值成1-N */
/************************************************************************/
void printArrayContent(int *arr, int N)
{
int i = 0;
int *px = arr;
for (px; px < arr + N; px++)
{
printf("%d\n", *px);
}
}
/************************************************************************/
/* 释放内存空间 */
/************************************************************************/
void freeArrayStoreSpace(int *arr)
{
free(arr);
}
find.h
#ifndef _FIND_H_
#define _FIND_H_
/************************************************************************/
/* 普通方式进行查找 */
/************************************************************************/
extern void find(void *p);
/************************************************************************/
/* 通过二分查找的方式进行查找 */
/************************************************************************/
extern void binarySearch(void *p);
#endif
findImpl.c
#include
#include
#include
#include "thread.h"
#include "find.h"
/************************************************************************/
/* 如果是想让线程使用,这里必须是void *p类型的 */
/************************************************************************/
void find(void *p)
{
//指针类型转换
struct threadStruct *pstruct = (struct threadStruct *)p;
int *px = pstruct->start;
//内存的遍历,从地址开始累加100个元素的大小,遍历所有元素
for (px; px < pstruct->start + pstruct->length; px++)
{
Sleep(100);
if (*(pstruct->pflag) != 0)
{
printf("属下%d无能,其他线程已经找到", pstruct->identify);
//并且获取系统时间
//这个地方关闭线程,如果直接返回,这时候这个线程自动关闭了。
return;
}
//判断