C++输出字符串的起始地址

为什么cout的char*指针打印输出为空 指针为空,可能是因为指针为空、指针指向的字符串没有以空字符结尾,或者指针指向的是一个空字符串。请确保这些情况不成立,以正确输出字符串。指针时,它会将指针解释为一个以空字符结尾的字符串,并输出该字符串。然而,如果指针指向的内存地址没有以空字符结尾,或者指针为空指针(指针所指向的字符串,确保指针指向的字符串以空字符结尾,并且指针不是空指针。来处理字符串,它提供了更方便和安全的操作方式。),那么输出结果将为空。 阅读详情

先给出通过字符型指针输出字符串的示例代码,如下:

#include <iostream>
using std::cout;
using std::endl;
 
int main()
{
    const char *pszStr = "this is a string";
 
    // 输出字符串
    cout << "字符串:" << pszStr << endl;
 
    // 显然不会输出地址值
    cout << "字符串起始地址值: " << pszStr << endl;
 
    return 0;
}

对于要使用cout输出字符串指针地址值,我们可能会产生困惑。曾经我们使用C标准库中的printf函数是如此的方便:

#include <stdio.h>
 
int main()
{
    const char *pszStr = "this is a string";
 
    // 输出字符串
    printf("字符串:%s\n", pszStr);
 
    // 输出地址值
    printf("字符串起始地址值:%p\n", pszStr);
    return 0;
}

兄弟,醒醒吧,咱们要写的是C++代码,不要总是抓着C不放嘛。好了,我们来分析一下,由于C++标准库中I/O类对<<操作符重载,因此在遇到字符型指针时会将其当作字符串名来处理,输出指针所指的字符串。既然这样,那么我们就别让它知道那是字符型指针,所以得用到强制类型转换,不过不是C的那套,我们得用static_cast来实现,把字符串指针转换成无类型指针,这样更规范,如下:

#include <iostream>
using std::cout;
using std::endl;
 
int main()
{
    const char *pszStr = "this is a string";
     
    // 输出字符串
    cout << "字符串:" << pszStr << endl;
                
    // 如我们所愿,输出地址值
    cout << "字符串起始地址值: " << static_cast<const void *>(pszStr) << endl;
 
    return 0;
}

均值场博弈_平均场博弈(mean field game) The New Big Fish Called Mean-Field Game Theory原文链接http://www.science4all.org/article/mean-field-games/​www.science4all.org主要内容在经典博弈论中,它对附近其他鱼类的行为做出反应。这是非常复杂的,因为不同的鱼类之间会有大量的相互作用。这意味着经典博弈论对应于一长串高度耦合的方程。... 阅读详情

相关推荐

从Applied Intelligence被拒到The Visual Computer录用:我的计算机视觉论文投稿时间线全记录(含详细修改意见)

本文详细记录了作者从Applied Intelligence被拒到The Visual Computer成功发表计算机视觉论文的全过程,重点分享了如何将模糊的拒稿理由转化为具体改进方案。文章包含技术改进细节、写作调整策略以及期刊选择经验,为计算机视觉领域的研究者提供了实用的投稿指南。

weixin_30872499的博客 467

C++中cout输出字符型指针地址值的方法

#include #include using namespace std; int main(){ char c[3]={'a','b','c'}; char *p=c; cout cout(p+1) cout(p+2) system("pause"); return 0; } 若要打印地址请用void*,否则 p会被认为是字符串。

借你一秒 9549

STM32踩坑--NoST-LINK detected

这里出现的NoST-LINK detected是没有扫描到端口 在我使用一段Fly-MCU后,有一天突然发现出现如上错误,再检查的过程中检查以下几点 1.STM32 魔术棒的设置 1.1Debug设置 1.2 utilities 设置没有问题,与原来一样又看了下端口——在设备管理器中;也没有问题 ...

qq_53002477的博客 2万+

cout输出char *类型指针地址

今天在看书上的程序时被cout&amp;amp;lt;&amp;amp;lt;(int)p&amp;amp;lt;&amp;amp;lt;endl与cout&amp;amp;lt;&amp;amp;lt;(int *)p&amp;amp;lt;&amp;amp;lt;endl搞糊涂了,就查了这两者之间的区别。 1.首先需要先了解指针的值是它指向存储单元地址的数值, 2.cout&amp;amp;lt;&amp;amp;lt;

foroverontheroad的博客 8154

基于Matlab与Bladed联合仿真的交互软件设计

基于Matlab与Bladed的交互软件设计

weixin_45014222的博客 816

ilqr算法原理推导及代码实践

ilqr算法原理详解

Forwarding3的博客 1741

C/C++混淆点-字符串指针

c语言中没有字符串的类型, 所以对字符串操作,有两种形式:可以用字符指针,或者字符串数组(这里的指针变量c, 系统会为其重新分配内存) (1)用字符数组存放一个字符串 char string[]="Linux C"; printf("%s\n",string); string是一个字符数组名,它同时也是该字符数组的首地址。 (2)用字符...

weixin_38383877的博客 511

[STM32H750]HAL库下FMC驱动正点原子MCU屏的移植与优化

本文详细介绍了在STM32H750平台上使用HAL库移植与优化正点原子MCU屏幕驱动的完整过程。重点解析了FMC硬件配置、Cache一致性处理、精确延时实现等关键技术难点,提供了实用的移植方案和性能优化技巧,帮助开发者高效解决屏幕显示问题。

rock5的博客 286

C++中cout输出字符型指针地址值的方法:static_cast<void *>(char*)

1、字符串指针无法输出地址值的原因: 由于C++标准库中I/O类对<<操作符重载,因此在遇到字符型指针时会将其当作字符串名来处理,输出指针所指的字符串。 2、解决方法: 既然这样,那么我们就别让它知道那是字符型指针,所以得用到强制类型转换,用static_cast来实现,把字符串指针转换成无类型指针,如下: int main() { const char *pszStr = "this is a string"; // 输出字符串 cout << "字符串:"

个人工作中学到的专业技术与职业发展知识笔记 2266

多个MOS管并联应用场景的四大要点

动态运行时,阈值电压Vgsth最低的MOS管首先打开,最后关闭。这种MOS管一般会占据更多的开关损耗,并且在开关转换过程中,承担了更高的电应力。

VBsemi的博客 3750

超详细 Git创建仓库及上传项目至Github操作(Windows系统)

文章目录前言一、Git下载及安装二、创建代码仓库1.配置身份2.创建本地仓库3.提交本地代码三、使用Git上传代码至Github1.创建ssh keys2.在Github中新建仓库3.关联本地仓库与Github仓库4.推送代码至Github仓库总结 前言 本文对于Windows系统上git的安装及基本使用方法进行简单介绍,并介绍如何使用git将仓库中的项目上传至个人的Github中去。内容参考《第一行代码》以及一些博客。 本文适合新手阅读哦~ 一、Git下载及安装 打开网站 git下载 下载安装包(直接

lijianyi0219的博客 2万+

解析:数组名a、数组名取地址&a、数组首地址&a[0]、数组指针*p

解析:数组名a、数组名取地址&a、数组首地址&a[0]、数组指针*p_LoongTech的博客-优快云博客_数组取地址 数组和指针向来就是傻傻分不清,当他们一起出现的时候就更加懵逼。 1 解析不同变量之间的区别: 数组名a: 数组名可以作为数组第一个元素的指针。我们由数组和指针的关系知道,a代表这个地址数值,它相当于一个指针,指向第一个元素(&a[0]),即指向数组的首地址。数组中的其他元素可以通过a的位移得到,此时的进阶是以数组中单个的元素类型为单位的,即a+i= &a

pikachu_beta的博客 2326

面向高速Serdes的信号完整性优化:从封装 - 板级互连局限到封装内互连技术演进(一)

本文针对高速SerDes互连链路中的关键电磁效应展开研究:1)揭示了封装-主板互连结构在毫米波频段易激发谐振效应,导致53GHz传输陷波和阻抗偏移;2)提出基于本征模分析的谐振抑制方法,通过优化接地过孔排布使带宽突破95GHz;3)系统比较了方形/六边形BGA排布下23种差分对朝向的串扰特性,证实六边形阵列可将功率和串扰降低30%以上;4)论证了100GHz以上带宽需采用封装内互连架构,其较传统方案减少50%阻抗不连续节点。

小孟同学的博客 231

在字符串中找出连续最常的字符串,并把这个串的长度返回。

在字符串中找出连续最常的字符串,并把这个串的长度返回。 并把这个最长数字串赋给一个函数参数outputstr所指向的内存。 例如"abcd12345ed123sf3343461346345" 的首地址赋给inputstr后函数返回9,outputstr所指向的值为“3343461346345”; [cpp] view plaincopy

lvmengmeng 728

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

经典面试题——求字符串中最长的数字串

在字符串中找出连续最常的字符串,并把这个串的长度返回。 并把这个最长数字串赋给一个函数参数outputstr所指向的内存。 例如"abcd12345ed123sf3343461346345" 的首地址赋给inputstr后函数返回9,outputstr所指向的值为“3343461346345”; #include using namespace std; int maxContinueN

Solidfish的专栏 1849

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

记录PTA甲级以及C++部分语法知识1032*

我自己写的有点小问题,先贴上自己的,日后找找问题。 底下一版参考柳婼大神:https://blog.youkuaiyun.com/liuchuo/article/details/52144527?utm_source=blogxgwz9 #include&lt;iostream&gt; #include&lt;vector&gt; using namespace std; struct letter...

San_0303的博客 188

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

c++输出数组名问题

定义一个char类型的数组,直接输出数组名到屏幕上显示的是什么? #include using namespace std; void main() { char words[5]; cout } 输出: 解释: char类型的数组涉及到字符串的操作,因此直接输出char数组的名字会输出字符串。因为没有初始化字符串数组,所以输出的是乱

binbin1hao的博客 2393

C语言 char * 和 char[] 内存中区别(不完善,希望一起探讨)

一、char * 如图 char *a = "bc" 首先在内存中随机一个地址(这边是4218948)来存放'b','c'的话地址往后+4, 然后char *a 中的a是一个指针指向上面的随机地址(也就是4218948),最后来解释一下输出, 输出a就是输出指针a指向的地址(4218948) 输出&a就是输出指针a存放在内存中哪个地方(a的地址) 输出*a就是输出指针a指向的地址的内容(4218948里面保存了啥) 输出*&a就是&a里保存了啥(当然还是a本身) 二、char .

LuxuryZed的博客 575

c++中cout输出字符串首地址

char *p="hello"; cout<<p; 在我们的印象中此时会输出字符串的首地址,然而此时cout会直接将字符串输出,而不是字符串的首地址,而在c语言中printf("%p",p);就会输出字符串数组的首地址,printf("%s",p);则会输出字符串。 c++语言中的解决方案: 用void*指向字符串,cout无法知道void*指针指向的数据的解析方法,所以会输出字符

Cgsyuan 4965

将字符串赋给 字符指针

#include<iostream> using namespace std; int main() { int *p2=new int[10];///动态分配了10个int大小的内存空间,这片空间的起始地址赋值给p2 char *p="computer";///双引号做三件事:(1)申请空间,存放字符串(2)在字符串结尾加\0(3)返回空间起始地址 ///p...

Grady_Ne的博客 1699

C语言字符串的输入和输出

字符串的输出 C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是: puts():输出字符串并自动换行,该函数只能输出字符串。 printf():通过格式控制符%s输出字符串,不能自动换行。除了字符串,printf() 还能输出其他类型的数据。 示例 #include <stdio.h> int main(){ char str[] = "http:/...

weixin_45743799的博客 4241

cout 输出字符串(指针)常见问题及put,write函数

C++ ostream类为下面的指针类型定义了插入运算符函数: const signed char *; const unsigned char *; const char *; void *; C++用指向字符串存储位置的指针来表示字符串,指针的形式可以是char数组名,显式的char指针或用引号括起来的字符串。 下面是一个简单输出字符串的例子: #include using names

Epic丶玖遇 5117

cout输出字符型指针地址值的方法

先给出通过字符型指针输出字符串的示例代码,如下: #include using std::cout; using std::endl; int main() { const char *pszStr = "this is a string"; // 输出字符串 cout // 显然不会输出地址值 cout return 0; } 对于要使用cou

青山_绿水的专栏 962
上一篇: Ubuntu下图形界面卡死的解决办法
下一篇: C语言动态数组
ly0303521
博客等级 码龄17年 135粉丝 90原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值