二级指针示例
?廢話不多說,直接上示例:
//之所以定義二級指針**P,不是為了使用**P表示指向的值,而是為了使用*P來存儲或者改變目標指針所指向的地址 void GetMemory2(char **p, int num) {*p = (char *)malloc(num); //二級指針p改變入參p指針指向的地址 } void main(void) {char *str = NULL;GetMemory2(&str, 100);//str指針指向的地址,以形參的方式傳遞給GetMemory2strcpy(str, "hello\r\n");printf(str);free(str);char *p = NULL;char **p2 = NULL;p2 = &p;*p2 = (char* )0xF5; //改變p指針指向的地址 *p2存儲的是p的值printf("p-> %x\r\n",p);unsigned char buff[10];unsigned char *pbuff = buff;*(pbuff+9) = 20;//一級指針可以改變數組的值printf("pbuff+9 = %d\r\n",*(pbuff+9));printf("buff[9] = %d\r\n",buff[9]); } //運行結果hello p-> f5 pbuff+9 = 20 buff[9] = 20?
總結
- 上一篇: 结构体位域及联合体解析
- 下一篇: return和break的区别