《C/C++ 高级开发 与Linux内核源码探析 提高班(王保明老师)【2】》

 指针铁律:

 

 

   

 

 

 

 

指针类型不一样,导致  p+1 的步长不一样;

这就是C和Java 的区别

数据类型的本质是什么?——固定内存大小的别名

指向的数据类型不一样,则+1 的步长不一样

数组名(a) 代表数组首元素地址

&a:代表整个数组

 复习:

第二套:

一级指针 -> 二级指针:

在被调用函数里面分配内存;在主调用函数里面使用

为了分清内存在主调用函数和被调用函数里面分配

https://blog.csdn.net/qq_32483145/article/details/52901230

通过传指针改变指针所指向的地址:

1. 指针引用 

2. 二级指针

 

传进去的 pp是个二级指针

形参变了实参没变,但是把实参里指向的地址变了... 

形参和定义在函数里面的局部变量没有任何区别 ... 

调试:

 

 

这个 return buf 只是返回了一个  char * —— 把内存块的首地址返回出去了
并没有把整个内存块返回 ,所以返回的这个指针成了一个垃圾指针 ... 

不是代码入栈,是内存空间入栈

 

 

p=p+2 改变了指针变量

free(p) 是从新的位置开始释放 ... 

解决方案:

原文地址:https://www.cnblogs.com/cx2016/p/13084776.html