69,371
社区成员
发帖
与我相关
我的任务
分享
{
char *string[N]; //这里只分配了N个字符指针的空间,占4*N的内存空间,也就是说这个数组能存N个地址
input(string);
}
void input(char *p[])
{
int i;
for(i=0;i <N;i++)
gets(p[i]); //上面的地址未指向任何空间,不能用
}
最后记得
for(i=0; i<N; i++)
free(p[i]);
#include <stdio.h>
#include <stdlib.h>
#define N 5
void input(char *p[])
{
int i;
for(i=0;i <N;i++)
{
p[i]=(char*)malloc(10);//为指针开辟空间
gets(p[i]);
}
}
int main()
{
char *string[N];
input(string);
char *String[] = {"asdf","qwer","zcxv"};//指针数组初始化
for(int i = 0; i<N; i++)
{
printf("s_%d:%s\n",i,string[i]);
}
system("PAUSE");
return 0;
}
使用之前应该先分配内存
for (i = 0; i < N; ++i)
string[i] = new char[128];
for (i = 0; i < N; ++i)
delete []string[i];
#include <stdlib.h>
#define N 10
void input(char *p[])
{
int i;
for(i=0;i <N;i++)
gets(p[i]);
}
void main()
{
char *string[N];
int i;
for (i = 0; i < N; ++i)
string[i] = (char*)malloc(128);
input(string);
for (i = 0; i < N; ++i)
free(string[i]);
}