c - 指向字符串的指针以及赋值和取消引用之间的区别
问题描述
在以下代码中:
#include <stdio.h>
int main(void) {
char* message = "Hello C Programmer!";
printf("%s", message);
return 0;
}
我不完全理解为什么没有必要在通话中预先'*'
添加消息。printf
我的假设是message
,由于它是指向 a 的指针,双引号字符串中的第一个字母char
将显示.'H'
解决方案
%s
格式运算符要求其对应的参数是一个指针char *
。它打印从该地址开始的整个字符串。字符串是以空字节结尾的字符序列。这就是打印整个消息的原因。
如果您提供一个数组作为相应的参数,它会自动转换为指向数组第一个字符的指针。通常,只要将数组用作 r 值,它就会进行这种转换。
您不需要使用*
运算符,因为参数应该是一个指针。如果您使用过*message
,您只会将'H'
字符传递给printf()
. 如果您使用%c
格式而不是%s
- 其对应的参数应该是char
.
推荐阅读
- django - 根据类别 django 获取数据
- console - 在 spyder IDE 中,运行选择工作正常,运行文件保持运行/挂起
- angular - 如何使 nativescript-angular 应用程序在后台运行?
- sql - 将 2 列的连续值合并到一个单元格
- c# - 如何将资源添加到 Visual Studio 扩展“自定义工具”?
- excel - 具有重要工作簿概述和打开它们的能力的列表框加载项
- javascript - 如何在一个地方获得所有 api 响应 (33) 而不会弄得一团糟
- python - 找到或选择文本时如何设置 QTextEdit 颜色?
- python - 有没有办法使 psutil 输出在运行之间保持一致?
- javascript - 为什么我收到 ajax 请求发送的空数据?