//(1)编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间
//new(n)表示分配n个字节的内存空间
//(2)写一个函数free,将前面用new函数占用的空间释放。
//free(p)表示p(地址)指向的单元以后的内存段释放
#include <stdio.h>
#include <stdlib.h>
char* news(char* s[], int n);
void myfree(char* p);
int main() {
char* str[20], ** p;
//输入数组的长度
int n,i;
scanf_s("%d", &n);
printf("分配前的地址%p\n", str);
*str = news(str, n);
printf("分配后的地址%p\n", str);
p = str;
for (i = 0; i < n; i++) {
scanf_s("%s", *(p + i),4);
}
for (i = 0; i < n; i++) {
printf("%s\t", *(p + i));
}
printf("释放前的地址%p\n", str);
myfree(*str);
printf("释放后的地址%p\n", str);
return 0;
}
char* news(char* s[], int n){
int i;
for (i = 0; i < n; i++) {
s[i] = (char*)malloc(20 * sizeof(char));
}
return *s;
}
void myfree(char* p)
{
return free(p);
}
也可参考
https://www.cnblogs.com/vs2019/p/13630985.html