关于指针的问题求助
#include<conio.h>#include<string.h>
#include<stdio.h>
void fun(char str[],int m, char *pt)
{ int k,q,i,j=0;
for(k=0;k<m;k++)
{ q=strlen(str);
j+=q;
for(i=0;i<q;i++)
pt=str;
pt+=q;//这条语句是什么意思呀?pt不是指针吗,q不是常数吗,两者能相加吗?
pt=0;
}
pt-=j;//这条语句是给指针清零吗?{:10_266:}
}
main()
{ int m, h;
char s,p;
printf("\nPlease enter m: ");
scanf("%d",&m);gets(s);
printf("\nPlease enter %d string:\n ",m);
for(h=0;h<m;h++) gets(s);
fun(s,m,p);
printf("\nThe result is :%s\n ",p);
}
代码用最好代码文本写出哦就是上面的"<>",这样看的清楚点,
pt+=q;==> pt=pt+q;
pt-=j; ==>pt =pt-j;
这里定义的是字符型指针,也就是指针指向一个字符型数据的地址,例如p++,不就是依次给指针p+1么,也就是将p指向下一个字符的意思吧,我也是个新手 希望对你有帮助~-~{:5_109:} 指针也是可以参与运算的,进行偏移,指针就是一个32位的int值, 这里的pt被当成数组中的pt中的字符来和q来进行相加的。这里将char转换成了Int型在进行相加,这叫做隠式转换 pt+q的意思是pt+q*(sizeof(pt指向的数据类型,这里是char)),就是从pt开始往后数q个char类型,的地址 这代码到底想实现什么。。完全看不懂
页:
[1]