二级指针传递示例
/*******************二级指针的传递************************/
#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;
}
浙公网安备 33010602011771号