* 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<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\r\n", *ip);
printf(" vaar=%d\r\n", vaar);
*ip=30;
printf(" *ip=%d\r\n", *ip);
printf(" vaar=%d\r\n", vaar);
函數參數傳遞