printf里面打印指针的问题

而在c语言中,使用printf只需要使用不同的格式就可以区分打印出是字符串还是指针变量的值:

cout和cin后面跟指针的问题

cout<<mm 和cin>>nn;它是可以自己识别mm和nn是不是指针变量吗?
    答:cin后面只能跟char*的指针,别的类型指针(eg:int*)报错; (这里只是说cin后面跟的指针类型的限制,不涉及其它类型)
           cout后面跟char*的指针,打印的是里面的内容,cout后面跟int*的指针,打印的是地址
           cin输入时,如果给char* 会自动结束符吗,会的;
           char *p2;前提是p2指向有空间的地址
      cin >> * p2 ;  //只是输入一个字符
      cin >> p2 ;   //输入p2所指的空间内容 全部修改

在C语言里,输出一个字符串的指针很方便,直接printf("%p/n",p);就输出了。
    而 C++ 里 cout 太自作聪明了,为了省去我们循环输出字符的麻烦, cout<<p<<endl; 被翻译为输出 p 指向的字符串值。
    这个时候要输出 p 的指针值就只能先将其转为 void * 再输出。因为 void 型, cout 没法输出,只能乖乖输出指针。
    此外 cout<<&p<<endl; 是不可取的,它其实等效于 printf("%p/n",&p);
    那个输出流运算符被重载过,这样更加方便输出字符串,因为字符串比较特殊,用/0结尾,
    所以这样的重载可行,输出到内存为 /0 的地方就可以,但是普通数组没有这样的特性所以不重载,直接输出地址

举例说明

我们知道在c++中指针变量和指针所指向的内存是两个完全不同的概念,指针变量里边存放的是一个地址,那么我们怎么输出指针变量的值,以及怎么输入指针变量本身的地址呢?

char *p="abcde";
cout << hex << &p <<endl;//此处是输入指针变量的地址
cout << hex << (void *)p<<endl;//此处是输出指针变量的值 即指针所指向内存的地址

(void *)强制类型转换
因此,同样的,对于怎么访问类对象中指针变量的值和类对象中指针变量的地址:

class name
{
public:
name(char *pn); ~name();
//protected:
char *pname; int size;
}; name::name(char *pn)
{
cout << " Constructing " << pn << endl;
pname = new char[strlen(pn) + 1];
if (pname != 0) strcpy(pname, pn);
size = strlen(pn);
} void main()
{
name Obj1("NoName");
cout << hex << "obj1的地址是:" << &Obj1.pname << endl;//此处是输出指针变量的地址
cout << hex << "obj2的地址是:" << (void *)Obj1.pname << endl;//此处是输出指针变量的值
}

c++中的printf、和cout和cin后面跟指针的问题的更多相关文章

  1. 两种方法:VS2008下C++窗体程序显示控制台的方法——在QT程序中使用cout和cin

    老蔡写了一个基于QT的窗体程序,而过去写的类的调试信息都是用cout显示的,苦于窗体程序无法显示cout信息很多信息都看不到,于是就想到让控制台和窗体同时显示.显示控制台方法如下 1.项目(或者叫“工 ...

  2. c++ cout、cin、endl

    cout是标准输出流对象,<<是输出操作符:cin是标准输入流对象,>>是输入操作符:endl是换行符操作符.他们都属于C++标准库,所以都在std的名字空间里.所以要在开头写 ...

  3. shell中awk printf的用法

    打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在print函数中使用制表符并不能保证得到想要的输出,因此,可以用printf函数来格式化特别的输出. printf函数返回一个带格式的字符串给 ...

  4. Linux内核中的printf实现【转】

    转自:http://www.cnblogs.com/chenglei/archive/2009/08/06/1540702.html 从main.c中的printf开始读这个函数. 首先看printf ...

  5. 转载:shell中awk printf的用法

    转载:http://www.linuxawk.com/jiaocheng/83.html 6. printf函数   打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在print函数中使用制表 ...

  6. c++中的对象引用(object reference)与对象指针的区别

    ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★ 区别: 1. 指针是一个实体,而引用仅是个别名: 2. 引用使用时无需解引用(*),指针需 ...

  7. C++中怎么获取类的成员函数的函数指针?

    用一个实际代码来说明. class A { public: staticvoid staticmember(){cout<<"static"<<endl;} ...

  8. C++中vector::data()使用心得和对自定义类型指针运算符的默认重载

    一.C++ vector::data()函数 返回值类型:vector的基类 返回值:Returns a pointer such that [data(), data() + size()] is ...

  9. fprintf输出到文件中,sprintf输出到字符串中. 如: fprintf(fp,"%s",name); fp为文件指针 sprintf(buff,"%s",name); buff为字符数组

    fprintf输出到文件中,sprintf输出到字符串中. 如: fprintf(fp,"%s",name); fp为文件指针 sprintf(buff,"%s" ...

随机推荐

  1. Java中读写锁的介绍

    读写锁的简单介绍 所谓的读写锁,就是将一个锁拆分为读锁和写锁两个锁,然后你加锁的时候,可以加读锁,也可以加写锁. ReentrantLock lock=new ReentrantLock(); loc ...

  2. Linux下搭建iSCSI共享存储

    转至:https://www.linuxidc.com/Linux/2016-09/135655.htm Linux下搭建iSCSI共享存储 拓扑: 实验步骤: ------------------- ...

  3. 《Symfony 5全面开发》教程01、Symfony介绍

    大家好,我是伟伟权,你正在观看的是<Symfony5全面开发>视频教程. Symfony是一款优秀的PHP框架,我们到Symfony官网来查看一下Symfony的介绍.Symfony是一组 ...

  4. Java基础--环境变量配置

    安装JDK配置编程或运行环境(必要) ①下载JDK 在下载页面中你需要选择接受许可,并根据自己的系统选择对应的版本,本文以 Window 64位系统为例: 根据安装提示一步一步安装完成. ②配置环境变 ...

  5. low-code

    low-code特点: 1. 一个创造软件的开发环境,类似vs-code: 2. 通过可视化拖拽和参数配置高效开发. 1. 背景 1.1 目标 需求的交付质量和交付效率一直是中后台项目开发中非常关注的 ...

  6. Pandas:plot相关函数

    0.注意事项 及 各种错误 1)绘制bar图时,如果出现重复的x值被合并到一个情况(导致X轴应该显示内容有缺失),可能是由于Pandas版本太低: 2)无法设置中文title,在代码中加入两句话: p ...

  7. Python:Scrapy(二) 实例分析与总结、写一个爬虫的一般步骤

    学习自:Scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 - 知乎 Python Scrapy 爬虫框架实例(一) - Blue·Sky - 博客园 1.声明Item 爬虫爬取的目标是从非 ...

  8. Element-UI tree 组件 点击后高亮显示的样式修改(背景色)

    感觉默认的高亮背景色颜色太浅,修改一下: .el-tree-node:focus > .el-tree-node__content { background-color: #ccc !impor ...

  9. matplotlib补充知识及数据清理方法

    今日内容概要 数据操作 数据清洗理论 数据清洗实操 数据操作 read_csv read_excel read_hdf read_html read_json read_msgpack read_sq ...

  10. 微服务从代码到k8s部署应有尽有系列(十三、服务监控)

    我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...