calloc在动态分配完内存后,将内存空间置为零。malloc不初始化,里边数据是随机的脏数据。
O(n^2):b、e O(n*logn):a、c、d
①: sizeof(int)*8 ; ② 32字节 ; ③ 32字节 ;
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
Void GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
void Test(void)
{
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL)
{
strcpy(str, “world”);
printf(str);
}
}
上面运行测试功能时的每个结果是什么。
1.会崩溃。 2.乱码 3.能够输出hello 4.str的动态内存已经被释放
char *revstr(char *str, size_t len)
{
char *start = str;
char *end = str + len - 1;
char ch;
if (str != NULL)
{
while (start < end)
{
ch = start;
end=ch;
start=end;
*start++;
*end--;
}
}
return str;
}
这里知识帮大家总结一下,有什么错误的地方欢迎指正。