关于printf()输入的一点问题~

zkeagle 2006-04-22 11:08:03
偶然见了一句这样的代码~
printf("%s","*******"+5);
屏幕输出时2个星号
**
不太明白
为什么"*******"+5会等于"**" ?
这里的+号到底做了什么样的运算?
...全文
232 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
C_520 2006-04-23
  • 打赏
  • 举报
回复
+5,应该是打印的地址向后移动了吧,我觉得是,知道的出来给大家讲讲.
sunjie_nuaa 2006-04-23
  • 打赏
  • 举报
回复
"*******"为字符串首地址
+5为地址后移5
sevencat 2006-04-23
  • 打赏
  • 举报
回复
printf("%s",&"*******"[5]);亦可。
niatclock 2006-04-23
  • 打赏
  • 举报
回复
+5表示指针后移

通过楼上一位兄长提过的程序段如:
for(int i=0;i<7;i++)
printf("%s\n","*******"+i);
不同的i的值对应的输出,可更为清楚的理解了

而Printf作为输出函数只是输出对应指针位置的数或字符串而以
臭小子 2006-04-23
  • 打赏
  • 举报
回复
printf("%s*******",+5);
  • 打赏
  • 举报
回复


这个偶还没用过的说
ENOUGH_XU 2006-04-23
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <stdio.h>

int main()
{
char *p="4646744313114854613";;
char a[]="4646744313114854613";
//p=a;
for(int i=0;i<sizeof(a)/sizeof(char);i++)
{ printf("%s",(p+i));
printf("\n");
}
return 0;
}
/*
int main()
{
char *p;
char a[]="4646744313114854613";
p=a;
for(int i=0;i<sizeof(a)/sizeof(char);i++)
{ cout<<*a[i];
cout<<endl;
}
return 0;
}*/其实,这两个是一样的,只是输出的形式不一样
ENOUGH_XU 2006-04-23
  • 打赏
  • 举报
回复
是的,是指针后移.其实,如一个数组:char a[20]={.....};char *p=a;这样的话是把啊的首地址给了p,同样:char *p="......";这里同样的是把这个字符串的首地址给p,所以"...."+i,其实就像数组一样的.印象中,在C里面好象还有经典的问题关于这个.
chenhu_doc 2006-04-22
  • 打赏
  • 举报
回复
for(int i=0;i<7;i++)
printf("%s\n","*******"+i);
...对,就用这个,通过不同的i的值对应的输出,就可以揣摩出实现的机制了
厦门德仔 2006-04-22
  • 打赏
  • 举报
回复
#include <stdio.h>
void main()
{
int i,m=1;
for(i=0;i<19;i++)
{
// %*s\n *表示控制宽度,s字符串
// m<=10?10+m :30-m 表示输出的位置,
// (m<=10?20-2*m:2*m-20)控制输出的个数
printf("%*s\n",m<=10?10+m :30-m ,"*******************"+(m<=10?20-2*m:2*m-20)
);
m++;
}

}
zkeagle 2006-04-22
  • 打赏
  • 举报
回复
是不是在这里
"******"是做为一个字符指针或者说一个地址进行处理的~
也就是说后面的+5,+7之类的数据表示的是地址偏移量?~
我这样理解对吗?~
loveliu0429 2006-04-22
  • 打赏
  • 举报
回复
我也不明白唉,没用过
有明白的给讲讲呗
JoyerHuang_悦 2006-04-22
  • 打赏
  • 举报
回复
这与printf没有什么联系,关键在于阁下对C语言的理解,
或者更加准确的说,在下阁下对字符串常量,字符指针,指针运算的理解,
这个最好找本书来看。比如《C程序设计语言》《C与指针》《C专家编程》

另外,请把程序中的"*********"改成"SeeWhatHappen",再把"+5"改为"+1"、"-1"、
"+7"之类的东西、看看会是什么效果。。
只见烟火飞扬 2006-04-22
  • 打赏
  • 举报
回复
看看,应该可以明白些什么
---------------------------------
for(int i=0;i<7;i++)
printf("%s\n","*******"+i);

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧