Edinburge 发表于 2017-3-4 12:52:06

关于指针的问题求助

#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);
}


kai759630 发表于 2017-3-4 13:49:29

代码用最好代码文本写出哦就是上面的"<>",这样看的清楚点,
pt+=q;==> pt=pt+q;
pt-=j; ==>pt =pt-j;
这里定义的是字符型指针,也就是指针指向一个字符型数据的地址,例如p++,不就是依次给指针p+1么,也就是将p指向下一个字符的意思吧,我也是个新手 希望对你有帮助~-~{:5_109:}

freeparty 发表于 2017-3-6 09:08:08

指针也是可以参与运算的,进行偏移,指针就是一个32位的int值,

康小泡 发表于 2017-3-7 15:40:15

这里的pt被当成数组中的pt中的字符来和q来进行相加的。这里将char转换成了Int型在进行相加,这叫做隠式转换

xidian237 发表于 2017-3-7 17:06:54

pt+q的意思是pt+q*(sizeof(pt指向的数据类型,这里是char)),就是从pt开始往后数q个char类型,的地址

想要养只猫 发表于 2017-3-7 22:19:56

这代码到底想实现什么。。完全看不懂
页: [1]
查看完整版本: 关于指针的问题求助