小学弟的一个问题,不错额
#include<stdio.h> void main() { char *ch1[5]; int i; char **p; p=ch1; for(i=0;i<5;i++) scanf("%s",p+i); for(i=0;i<5;i++) printf("%s",*(p+i)); }
指针没有分配空间
c:
malloc
#include<stdio.h> #include<stdlib.h> int main() { char *ch1[2]; int i; char **p; p=ch1; for(i=0;i<2;i++) { ch1[i] = (char*)malloc(10); scanf("%s",*(p+i)); } for(i=0;i<2;i++) printf("%s\n",*(p+i)); }
c++:
#include <iostream> using namespace std; int main() { char *p[3]; for(int i=0;i<3;i++) { p[i] =new char [3]; // scanf("%s",p[i]); cout <<p[i]<<endl; } return 1; }
也可以用一个二维数组,用来初始化:#include<stdio.h> #include<stdlib.h> int main() { char *ch1[2]; int i; char **p; p=ch1; char a[2][10]; for(i=0;i<2;i++) { ch1[i] = a[i]; scanf("%s",*(p+i)); } for(i=0;i<2;i++) printf("%s\n",*(p+i)); }