c语言关于指针的问题!在线等!

若运行时从键盘输入字符串qwerty<回车>和abcd<回车>,则程序的输出结果是?
#include<string.h>
#include<stdio.h>
strle(char a[],char b[])
{ int num=0,n=0;
while(*(a+num)!='\0')num++;
while(b[n]){*(a+num)=b[n];num++;n++;}
return(num);
}
main()
{ char str1[81],str2[81],*p1=str1,*p2=str2;
gets(p1);gets(p2);printf("%d\n",strle(p1,p2));//p1和p2都是指针,指向字符串首地址,输入qwerty到底是怎么分配内存的?能存指针里吗?
}

问题:gets函数是从终端键盘读入字符串,p1指向str1首地址,qwerty中的q肯定是存入了str1[0]中,那w按道理是存入str[1]中,可是*p是一维指针,指向str1[0],再输入werty的时候,就没有存储的地方了呀?总不能存入指针里吧?没位置存放了啊?

char str1[81];   // str1 指向的内存能放81个char
char *p1 = str1; // p1 和str1 指向同样的地方

所以当然有地方存放


不过输入 80 个以上的字符还是有危险,所以 gets 被认为非常危险,不建议使用。 C语言的最新标准已经删除 gets 函数了

追问

指针不能存数据,那p指向首地址,存w的时候难道还要移动指针吗?

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答