* 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. ",*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<count;++i)
{
scanf("%d",p); //将输入的地址保存在p所指向的数据元素
++p;
}
//让p重新指向第一个元素
p=scores;
FUNC pfunc=NULL; //用函数指针(FUNC f)传递函数
for(int i=0;i<count;++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 ", *ip);
printf(" vaar=%d ", vaar);
*ip=30;
printf(" *ip=%d ", *ip);
printf(" vaar=%d ", vaar);
函数参数传递