回复 20楼 邵蜜柚
应该没有一维指针的说法,即使**p我也觉得说成指针的指针更准确;维数是对数组而言的,数组可看成相同数据类型的集合,是组织数据的一种方式。指针就是一种特殊的变量类型,唯一和它挂钩的是他指向的数据类型,所以会产生int *p和char *p的区别,作为p来说,他们类型一样,但*p类型不一样。你所说的p初始指向str1[0]没错,只是后来他指向哪了取决于函数gets的操作,是gets最后把他指向改了,写了个模拟gets函数功能的函数getstr放在你程序里,和你原来的运行结果一样,你应该从中可以看出缘由的,代码如下:#include<stdio.h>
void getstr(char *p)
{
char a;
while((a=getchar())!='\n')
{
*p=a;
p++;
}
*p=0;
}
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);
}
void main()
{ char str1[81],str2[81],*p1=str1,*p2=str2;
getstr(p1);getstr(p2);printf("%d\n",strle(p1,p2));//p1和p2都是指针,指向字符串首地址,输入qwerty到底是怎么分配内存的?能存指针里吗?
}
[ 本帖最后由 wmf2014 于 2015-2-28 07:42 编辑 ]
能编个毛线衣吗?