- 论坛徽章:
- 0
|
随便谈谈吧,这里其实还是一个最最基础的问题。就是指针的用法和什么是指针的问题。
看代码来说:- void GetMemory(char *p, int num)
- {
- p = (char *)malloc(sizeof(char) * num);
- }
复制代码 这个函数你注意他的参数列表void GetMemory(char *p, int num)这里的p是一个指针变量。根据函数参数的定义你可以理解,
这里的p和num两个参数都是传值进去,也就是说调用函数后,一份本地的COPY被该函数保留了。那么你只能使用这个局部的COPY进行使用
而不能对齐进行修改。其实,可以更加直观点你把char *顶一个一个别名typedef char * PCHAR,那么函数列表变为void GetMemory(PCHAR p, int num)
这样就可以简单的把p和num看为同样的效果了。
那么如果你想对p进行修改,应该如何做呢?其实还是一个指针的问题。你应该定义为传递进该函数的是一个指针,而不是他的COPY。所以,如下:
void GetMemory(char **p, int num)或者void GetMemory(char *&p, int num),这样都是可行的,函数内部就可以对(*p)看为一个整体进行修改了
比如:- void GetMemory(char **p, int num)
- {
- *p = new char[100];
- }
- void GetMemory(char *&p, int num)
- {
- p = new char(100);
- }
复制代码 回复 1# 好喜儿 |
|