NDK03_C:函数指针、内存分配

NDK开发汇总

函数指针

函数名是一个函数的首地址,所以我们可以将函数赋值给对应类型的函数指针

void(p)(char)
//void 返回值
//(*p) p 变量表示这个函数

void 类型的指针:
类似:java object

指针变量都是4个字节。都是用十六进制表示。
void* -》 int * / char * /float*

下面两个表达式完全不同
int(*calc2)(void a, void ); 函数指针
int
p(int a, int b); 一个返回值是int * 的函数
(int
) p(int a, int b)

2 内存分配

内存:
3区:
程序区
程序的二进制文件

静态存储区
全局变量和静态变量

动态存储区
堆区:用于程序动态分配
栈区:编译器自动分配,编译器自动申请和释放 2M

void* malloc(size_t size)
分配内存的单元是 字节, 大小 size,连续的内存
如果申请失败,返回值是NULL

void* calloc(size_t _Count,size_t _Size)
申请 _Count 个 大小为_Size 的连续空间,这个连续空间的大小是_Size,如果申请失败,返回值是NULL
而不是 _Count * size, 同时,它会初始化为0

void * realloc(void * ptr, int len);

动态申请的内存一定要收到释放
free(*p)
原则:不能重复释放
必须赋值NULL
申请和释放一一对应

3 其他

1) 熟练使用动态分配内存函数和释放内存的函数
2)char *str = “hello world” 和 char str[20] = “hello world”; 区别总结?

你可能感兴趣的:(NDK,c字符串,函数指针,内存分配)