马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 myqicq 于 2015-4-29 21:06 编辑
看了论坛的一个帖子,自己敲了下代码,有些疑惑!
printf("这是malloc执行后*p的长度=%d\n", (num * sizeof(**p)));//这里num * sizeof(**p)是否等于实际申请到的空间
没人鸟......
代码如下#include <stdio.h>
#include <string.h>
#include <malloc.h>
void GetMemory(char **p, long num){
printf("这是Test函数传给GetMemory函数里p的地址=%#X\n", p); //理解 **p 是一个什么东西,有什么作用
printf("这是malloc执行前*p的值=%s\n", *p); //理解 *p 又是一个什么东西,其作用是什么
printf("这是*p的长度=%d\n", sizeof(**p));
*p = (char*)malloc(num * sizeof(**p)); //申请num所指定大小的内存空间
printf("这是malloc执行后*p的长度=%d\n", (num * sizeof(**p)));
printf("这是malloc执行后*p的值=%s\n", *p);
}
void Test(void){
char *str = NULL; //申明一个char*空指针变量str
printf("这是调用GetMemory前str指向空间的值=%s\n", str);
printf("这是Test函数str的地址=%#X\n", &str);
GetMemory(&str, 100); //传str的地址给getmemory函数,在getmemory函数为str申请一块指定长度的内存空间
printf("这是调用GetMemory后str指向空间的值=%s\n", str);
strcpy(str, "hello"); //把字符串"hello"复制到str所指向的空间
printf("这是strcpy执行之后str指向空间的值=%s\n", str);
printf("%s\n", str); //打印str所指向的空间里的内容
printf("str size=%d\n", strlen(str));
free(str);
}
void main(void)
{
Test();
system("pause");
}
|