鱼C论坛

 找回密码
 立即注册
查看: 1305|回复: 6

[已解决]printf那行,为什么string指针前面不加*,取值运算符

[复制链接]
发表于 2020-9-7 16:43:09 | 显示全部楼层 |阅读模式

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

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

x
int main()
{
        char str[50];
        char *string = str;
        printf("请输入一个字符串:");
        fgets(str,100,stdin);     //读取输入的字符串 
        // scanf("%s",str);   字符串 
        printf("%s", string);    //读字符串 
        return 0; 

}
最佳答案
2020-9-8 00:46:29
string是字符串的首地址,字符串是存储在一起的,以‘\0’结尾的,printf() 函数的控制符是 %s ,要求最后输出的是整个字符串,而不是单个字符;

* 在运算的时候,用在变量前是表示取这个变量所指向的地址的值,printf() 函数的控制符改为 %c ,string 改为 *string 输出的则是字符串的第一个字符。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-7 17:16:22 | 显示全部楼层
因为输出字符串就是先取它的首地址,然后一直到/0;
比如你平时输出一个字符串,printf(“%s”,str),其实str的名字就是str的首地址(和数组差不多)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-7 19:34:08 | 显示全部楼层
个人理解的意思是:

char str[50];
str 是一个一维数组,根据数组的特性 str 数组名指向的是它的第一个元素的首地址

char *string = str;
将str的首地址赋值给了指针变量 string,
而 %s  是输出 一个字符串的,从 str的首地址开始直到  '\0'  (字符串是以\0 为结束符的)
所以  string 只是给了printf 一个字符串的开头,然后 它自动往后搜索 结束符\0,
以上为个人理解,言语比较白话
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-7 19:51:03 | 显示全部楼层
%s对应的是地址,它接受地址,不是值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-8 00:46:29 | 显示全部楼层    本楼为最佳答案   
string是字符串的首地址,字符串是存储在一起的,以‘\0’结尾的,printf() 函数的控制符是 %s ,要求最后输出的是整个字符串,而不是单个字符;

* 在运算的时候,用在变量前是表示取这个变量所指向的地址的值,printf() 函数的控制符改为 %c ,string 改为 *string 输出的则是字符串的第一个字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-22 19:37:12 | 显示全部楼层
haoiyang 发表于 2020-9-7 17:16
因为输出字符串就是先取它的首地址,然后一直到/0;
比如你平时输出一个字符串,printf(“%s”,str),其 ...

是只有字符串这样吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-22 19:56:56 | 显示全部楼层
风过无痕1989 发表于 2020-9-8 00:46
string是字符串的首地址,字符串是存储在一起的,以‘\0’结尾的,printf() 函数的控制符是 %s ,要求最后 ...

请受我一拜,大哥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 03:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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