指针铁律:
指针类型不一样,导致 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) 是从新的位置开始释放 ...
解决方案: