arrays - C中的字符串和指针
问题描述
指针是存储地址的变量。
char *ptr = "string";
printf("%s",ptr);
在此代码片段中,整个字符串在没有取消引用的情况下打印。为什么会这样?
在这种情况下,字符正在打印,它像数组一样按预期工作。
char *ptr = "string";
printf("%c",*ptr);
这两种情况有什么区别
解决方案
格式字符串 "%s" 期望对应的参数指向字符串的第一个字符,并且函数printf
输出字符串,直到'\0'
遇到终止的零字符。
实际上这个调用printf
char *ptr = "string";
printf("%s",ptr);
通过以下方式在引擎盖下逻辑实现
#include <stdio.h>
int main(void)
{
char *ptr = "string";
for ( char *tmp = ptr; *tmp != '\0'; ++tmp )
{
printf( "%c", *tmp );
}
return 0;
}
格式字符串"%c"
需要一个 char 类型的对象,函数printf
将对象输出为字符。
推荐阅读
- vue.js - 如何使用自动滚动功能 vue-draggable
- c# - 413 请求实体太大 IIS 10
- javascript - 删除 Alfresco 5.1 中的所有工作流实例
- java - 使用 lambda 计算列表中的列表
- google-apps-script - 查找最佳棋盘游戏的宏/脚本 - Google 电子表格
- python - 用“with”语句定义的 Python 变量 - 范围是什么?
- javascript - Javascript:第一次单击时向下滑动,第二次单击时打开链接
- html - 相对位置元素超出 CSS 中的值
- python - 索引以访问矩阵的元素
- c - 如何修复适用于某些值但不适用于其他值的代码