问答详情
源自:6-12 综合练习

关于对指针数组的赋值问题

给出一部分的代码,希望大神们给我解答

int n,k;                                //n为字符串个数,k为单个字符串需要的字节数

printf("输入字符串个数和单个字符串的字节数:%d,%d",n,k);

scanf("%d,%d",&n,&k);

char * p [n]                        //定义指针变量p为指向包含n个元素的一维数组

//可以发现我的语法哪里有问题吗?如果有帮我纠正一下,不胜感谢

int i;

for(i=0;i<n;i++)

{

    scanf("%s",p);    //主要纠结在这里,p是数组的名字,是p[0]也就是首个字符串的地址,我能这样直接赋一个char的字符串比如(I LOVE YOU)或者("I LOVE YOU")给p吗?

我只知道可以在声明定义时候整体赋值,比如:

char *p[4]={"I LOVE YOU","I LOVE me",YOU LOVE YOU","LOVE YOU"};

我知道上面这种,求大神耐心看完我的代码后能给我意见,不胜感谢

提问者:慕粉3754631 2016-08-17 21:35

个回答

  • 慕虎6185129
    2016-10-30 14:11:42

    我也不是很懂

  • GetUpEarly
    2016-08-19 21:00:13

    char * p [n]  定义的是字符指针,而不是字符串指针.即n个char型指针.所以不能把字符串赋值个p;

    直接赋值时,p被处理成了字符数组,用来指向第一个字符.