鱼C论坛

 找回密码
 立即注册
查看: 1245|回复: 5

[已解决]关于指针的问题求助

[复制链接]
发表于 2017-3-4 12:52:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include  <conio.h>
#include  <string.h>
#include  <stdio.h>
void fun(char str[][10],int m, char *pt)
{ int k,q,i,j=0;
  for(k=0;k<m;k++)
     { q=strlen(str[k]);
       j+=q;
       for(i=0;i<q;i++)
       pt[i]=str[k][i];
       pt+=q;//这条语句是什么意思呀?pt不是指针吗,q不是常数吗,两者能相加吗?
       pt[0]=0;
     }
  pt-=j;//这条语句是给指针清零吗?
}
main()
{ int m, h;
  char s[10][10],p[120];

  printf("\nPlease enter m: ");
  scanf("%d",&m);  gets(s[0]);
  printf("\nPlease enter %d string:\n ",m);
  for(h=0;h<m;h++) gets(s[h]);
  fun(s,m,p);
  printf("\nThe result is :%s\n ",p);
}

最佳答案
2017-3-4 13:49:29
代码用最好代码文本写出哦就是上面的"<>",这样看的清楚点,
pt+=q;  ==> pt=pt+q;
pt-=j; ==>pt =pt-j;
这里定义的是字符型指针,也就是指针指向一个字符型数据的地址,例如p++,不就是依次给指针p+1么,也就是将p指向下一个字符的意思吧,我也是个新手 希望对你有帮助~-~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-4 13:49:29 | 显示全部楼层    本楼为最佳答案   
代码用最好代码文本写出哦就是上面的"<>",这样看的清楚点,
pt+=q;  ==> pt=pt+q;
pt-=j; ==>pt =pt-j;
这里定义的是字符型指针,也就是指针指向一个字符型数据的地址,例如p++,不就是依次给指针p+1么,也就是将p指向下一个字符的意思吧,我也是个新手 希望对你有帮助~-~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-6 09:08:08 | 显示全部楼层
指针也是可以参与运算的,进行偏移,指针就是一个32位的int值,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-7 15:40:15 | 显示全部楼层
这里的pt被当成数组中的pt[0]中的字符来和q来进行相加的。这里将char转换成了Int型在进行相加,这叫做隠式转换
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-7 17:06:54 | 显示全部楼层
pt+q的意思是pt+q*(sizeof(pt指向的数据类型,这里是char)),就是从pt开始往后数q个char类型,的地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-7 22:19:56 | 显示全部楼层
这代码到底想实现什么。。完全看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 00:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表