cout输出字符串指针

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

#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++标准库中I/O类对<<操作符重载,因此在遇到字符型指针时会将其当作字符串名来处理,输出指针所指的字符串。既然这样,那么我们就别让它知道那是字符型指针,所以得用到强制类型转换,不过不是C的那套,我们得用static_cast来实现,把字符串指针转换成无类型指针,因为void型,
cout没法输出,只能乖乖输出指针。

 const char *pszStr =
"this is a string";

    

    //
输出字符串

    cout
<<
"字符串:" <<
pszStr << endl;

               

    //
如我们所愿,输出地址值

    cout
<<
"字符串起始地址值: " <<
static_cast<const void *>(pszStr) << endl;

char
*p2="abcd";
cout<<*p2<<endl;
cout<<p2<<endl;
printf("%p\n",&p2);
cout<<&p2<<endl;
void
*p=p2;
cout<<p<<endl;

a
abcd
0031FC04
0031FC04
00857834
请按任意键继续. . .

时间: 2024-10-08 08:15:52

cout输出字符串指针的相关文章

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

C++ ostream类为下面的指针类型定义了插入运算符函数: const signed char *; const unsigned char *; const char *; void *; C++用指向字符串存储位置的指针来表示字符串,指针的形式可以是char数组名,显式的char指针或用引号括起来的字符串. 下面是一个简单输出字符串的例子: #include <iostream> using namespace std; int main() { char name[] = "

C++中cout输出字符串和字符串型指针地址值的方法以及C语言中的printf用法比较

#include <iostream> using namespace std; #include <stdio.h> int main() { char *pstr = "china"; char *qstr = "america"; char *q = "adf"; char * s; s = "hello"; printf("pstr = %p\n", pstr); /*输出为

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

#include<iostream> #include<string> using namespace std; int main(){ char c[3]={'a','b','c'}; char *p=c; cout<<*p<<' '<<(void*)p<<endl; cout<<*(p+1)<<' '<<static_cast<void*>(p+1)<<endl; cou

c与c++中输出字符指针和字符串指针的问题

首先搞清楚在c语言中没有字符串的类型,所以对字符串操作,有两种形式:可以用字符指针,或者字符串数组(这里的指针变量c,系统会为其重新分配内存. c程序示例: 1  #include <stdio.h>  2   3 int main()  4 {  5   char *a="hello";  6   char b[]={'l','i','n','u','x'};  7   char *c=&b[1];  8   9    printf("%c\n"

编程题:用指针变量输出字符串

#include<stdio.h> void main() {  char *string="Hello"; printf("%s\n",string); } 字符串指针变量的介绍: 运行结果: 编程题:用指针变量输出字符串,布布扣,bubuko.com

字符串指针变量与字符数组的区别

使用字符串指针变量与字符数组的区别 (1)分配内存 设有定义字符型指针变量与字符数组的语句如下: char *pc ,str[100]; 则系统将为字符数组str分配100个字节的内存单元,用于存放100个字符.而系统只为指针变量pc分配4个存储单元,用于存放一个内存单元的地址.(2)初始化赋值含义 字符数组与字符指针变量的初始化赋值形式相同,但其含义不同.例如: char str[ ] ="I am a student ! " ,s[200]; char *pc="You

char型字符串(数组)与string型字符串 指针与引用

一.常指针: int *const p;    //指针不可改变,但是指针指向的数据可以改变. 指向常量的指针: const int *p;    //指针可以改变,但是指针指向的数据不可以改变. 指向常量的常指针: const int *const p;    //指针不可改变,且指针指向的数据也不可改变. 引用就是别名,定义引用的同时必须要对引用进行初始化. 二.利用引用返回多个值: 引用就是别名,引用必须要初始化. #include "stdafx.h" #include <

字符串指针数组,指向指针的指针

字符串指针数组,也即该数组中的每一项都是一个指向字符串的指针. 定义:char* s[3];即包含三个指针的数组,写成这种形式也可以更好的理解,即数组存的类型就是char*. 另外一点:数组名一般是指首地址,所以对该数组的第一个元素取地址&s[0],由于s[0]是指针,所以数组名也就是一个指向指针的指针,char** p=s; 那么对该数组的操作如下: int main() { char* a="hello!"; char* b="pangpang!"; c

字符串指针(char*)和字符数组(char [])区别

原文:http://www.blogbus.com/kavine-logs/29243638.html 今天在编写几个小函数的时候,半天调不通,长久不使用C++知识都快忘光了,赶紧拣些起来应付即将到来的应聘. void main(){    char* pStr1 = "Hello!";    char pStr2[] = "Hello!";    change(pStr1);    change(pStr2);}void change(char* pInstr){