二級指標的傳遞時注意地方
阿新 • • 發佈:2019-01-27
/*******************二級指標的傳遞************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void get100mem(unsigned char **pmem) {
unsigned char *temp = (unsigned char *)malloc(100);
*pmem = temp;
}
int main(int argc, char *argv[]) {
int i = 0;
unsigned char *p = NULL;
get100mem(&p);
memset(p, 0x68, 100);
for (i = 0; i < 10; i++) {
printf("%x ", *(p + i));
}
printf("\n");
return 0;
}
執行:
68 68 68 68 68 68 68 68 68 68
請按任意鍵繼續. . .
要把指標的地址傳過去,這樣子函式操作的才是同一塊記憶體資料。
下面是有問題程式碼:
/*************二級指標傳遞,問題程式碼*************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void get100mem(unsigned char *pmem) { //**pmem
unsigned char *temp = (unsigned char *)malloc(100);
pmem = temp; // *pmem=temp
}
//p的值沒有傳遞過去.
int main(int argc, char *argv[]) {
int i = 0;
unsigned char *p = NULL;
get100mem(p); // get100mem(&p)
memset(p, 0x68, 100);
for (i = 0; i < 10; i++) {
printf("%x ", *(p + i));
}
printf("\n");
return 0;
}