请问这句c语言代码是什么意思,主要是 *(char **)
不懂,这样写有什么作用?
第一种用法,使用堆内存
char * ptr = (char *)malloc(128); // 动态分配到堆内存
printf("堆内存ptr1:%x\n",ptr);
*(char **) ptr =ptr +4;
printf("堆内存ptr2:%x\n",ptr); // 发现ptr2打印的值和ptr1的值是一样的,这是为啥
打印结果如下:
第二种用法, 使用栈内存
char a = '1';
char * ptr = &a; // 使用栈内存
printf("栈内存ptr1:%x\n",ptr);
*(char **) ptr =ptr +4;
printf("栈内存ptr2:%x\n",ptr); // 发现ptr2打印的值和ptr1的值又不一样了,这是为啥
打印结果如下: