黑马程序员技术交流社区

标题: char *name="it",printf("%s",name) 为什么能够输出字符串? [打印本页]

作者: 天使爱恋。。    时间: 2015-5-8 14:52
标题: char *name="it",printf("%s",name) 为什么能够输出字符串?
是系统自定义 printf 函数 传入一个 指向字符串的 指针 ,就可以打印出来 还是什么希望大神替小弟解答下
作者: dcf    时间: 2015-5-8 15:49
不太清楚你说的什么,还有你的技术分好高,怎么得到得
作者: 好梦留人    时间: 2015-5-8 16:29
定义了一个name指针来指向了it的地址,%s打印的字符串是name指向的it啊
作者: ios专用    时间: 2015-5-8 18:52
%s是用来输出字符串的,而且字符串的输出是从首地址直到遇到\0为止,所以可以全部输出
作者: shenxian88    时间: 2015-5-8 19:48
%s就是打印字符串的啊,还有name只是一个指针

作者: wangzhewjl    时间: 2015-5-9 09:52
其实你可以这么理解,你定义了name指向“it”,你输出的时候是用的%s,%s是输出字符串, 那么输出的时候它会从指针指向的那个地址开始输出 只到遇到‘\0’结束。如果你用%c就只输出一个字符了。
作者: CornerFly    时间: 2015-5-9 11:35
int *s ="jack";
作者: CornerFly    时间: 2015-5-9 11:39
dcf 发表于 2015-5-8 15:49
不太清楚你说的什么,还有你的技术分好高,怎么得到得

你首先定义了一个指向字符串的指针变量name,name存储的是字符串的第一个字符的地址,
调用printf(“%s",name)会从name指向的字符开始输出,直到name指向的字符串结束。
作者: CornerFly    时间: 2015-5-9 11:41
你首先定义了一个指向字符串的指针变量name,name存储的是字符串的第一个字符的地址, 调用printf(“%s",name)会从name指向的字符开始输出,直到name指向的字符串结束。
作者: MadPawn    时间: 2015-5-9 12:17
“it”里面是3个字符  “i”“t”“/0”,%s会打印指针指向的字符就是“i”,知道遇到“/0”停止,所以打印出来是“it”
作者: wangsong    时间: 2015-5-9 17:11
wangzhewjl 发表于 2015-5-9 09:52
其实你可以这么理解,你定义了name指向“it”,你输出的时候是用的%s,%s是输出字符串, 那么输出的时候它 ...

同意,指针*name指向字符串“it”的首字符,即:指针name中地址是字符‘i’的地址,只有遇到\0的时候才会终止




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2