1. 程式人生 > >二級指標的傳遞時注意地方

二級指標的傳遞時注意地方

/*******************二級指標的傳遞************************/

#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; }