#include "stdio.h"
#include "string.h"
void GetMemory1(char* p)
{
p = (char*)malloc(100); //指针变量存放于栈中,被自动回收
}
void GetMemorySol1(char** p)//运用二级指针(类似于间址寻址)
{
*p = (char*)malloc(100);
}
char* GetMemorySol2(char* p)
{
p = (char*)malloc(100);
return p;
}
char* GetMemory2()
{
//char p[]存放于栈空间,函数执行完后被释放,p的地址不再指向p
char p[] = "hello world";
return p;
}
char* GetMemory3()
{
char* p = "hello world";
return p;
}
char* GetMemory4()
{
static char p[] = "hello world";
return p;
}
void test1(void)
{
char* str = NULL;
GetMemory1(str);
strcpy(str, "hello world");
printf(str);
}
void test1Sol(void)
{
char* str = NULL;
GetMemory1(&str);
strcpy(str, "hello world");
printf(str);
}
void test2(void)
{
char* str = NULL;
str = GetMemory2();
printf(str);
}
void test3() {
char* str = NULL;
str = GetMemory3();
printf(str);
}
void test4()
{
char* str = NULL;
str = GetMemory4();
printf(str);
}
void test5(void)
{
char* str = (char*)malloc(100);
strcpy(str, "hello");
free(str);
//str = NULL;
if (str != NULL)
{
strcpy(str, "world");
printf(str);
}
}
void test6()
{
char* str = (char*)malloc(100);
strcpy(str, "hello");
str += 6;
free(str);
if (str != NULL)
{
strcpy(str, "world");
printf(str);
}
}
int main()
{
test6();
return 0;
}
C语言地址分配题
猜你喜欢
转载自blog.csdn.net/Genius_bin/article/details/112196395
今日推荐
周排行