|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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");
- }
复制代码
|
|