C语言函数指针函数指针数组的用法
- 格式:pdf
- 大小:45.20 KB
- 文档页数:3
C语⾔函数指针函数指针数组的⽤法
* pointer1 //该指针指向从该地址开始⼀个1字节的内容
short int* pointer2; //该指针指向从该地址开始⼀个2字节的内容
long int* pointer3; //该指针指向从该地址开始⼀个4字节的内容
long long int* ponter4; //该指针指向从该地址开始⼀个8字节的内容
pointer1++ 使其对应内存地址移动⼀个字节
pointer2++ 使其对应内存地址移动两个字节
pointer3++ 使其对应内存地址移动三个字节
pointer4++ 使其对应内存地址移动四个字节
typedef void(*FUNC)(void); //定义函数指针类型FUNC
//打印函数
void printpass()
{
puts("congratunation!");
}
void printfail()
{
puts("sorry!");
}
void doprint(int *score,FUNC f) //执⾏打印任务
{
printf("your score is %d.\n",*score); //通过数据指针访问它所指向的数据
if(NULL!=f)
f();
}
int main()
{
const int count = 30;
int scores[count];
puts("please input the scores.");
int *p=scores;
for(int i=0;i { scanf("%d",p); //将输⼊的地址保存在p所指向的数据元素++p; } //让p重新指向第⼀个元素 p=scores; FUNC pfunc=NULL; //⽤函数指针(FUNC f)传递函数 for(int i=0;i { if((*p)>=60) pfunc=printpass; else punc=printfail; doprint(p,pfunc); ++p; } return 0; } typedef struct { void **pMem; //指向队列缓存 uint8_t memSize; //队列⼤⼩ uint8_t readIndex; //读队列索引 uint8_t writeIndex; //写队列索引 }Queuemsg_stu_t; 数组⽐较 u8 gui[5]={1,2,3,4,5},zhou[5]={1,2,3,4,5}; if (memcmp(&gui, &zhou, sizeof(zhou)) == 0)// (memcmp(gui, zhou, sizeof(zhou)) { } 只要gui[]和zhou[]内容⼀样,⽐对取地址和值都是可以⽐对成功 Task_stu_t *pTask_stu_t; pTask_stu_t = (Task_stu_t *)EEEPROM_BASE_ADDR; &(pTask_stu_t->timeStamp)); 地址(pTask_stu_t->timeStamp)); 值 int *ip; int vaar=20; ip=&vaar; printf(" *ip=%d\r\n", *ip); printf(" vaar=%d\r\n", vaar); *ip=30; printf(" *ip=%d\r\n", *ip); printf(" vaar=%d\r\n", vaar); 函数参数传递