c++-为什么a,b的地址取不到

问题描述

为什么a,b的地址取不到

#include
using namespace std;
int main()
{
char ch1='I',ch2='Q';
int n1=1, n2=6;
double d1=1.25,d2=20.5;

char *a,*b;
a=&ch1;b=&ch2;

int *c,*d;
c=&n1;d=&n2;

double *e,*f;
e=&d1;f=&d2;

  cout<<a<<"  "<<b<<endl;
cout<<c<<"  "<<d<<endl;
cout<<e<<"  "<<f<<endl;

cout<<*a<<"  "<<*b<<endl;
cout<<*c<<"  "<<*d<<endl;
cout<<*e<<"  "<<*f<<endl;

*a+=32; *b+=32;
*c-=5;  *d-=5;
*e+=10.0;*f+=10.0;

cout<<*a<<" "<<*b<<endl;
cout<<*c<<" "<<*d<<endl;
cout<<*e<<" "<<*f<<endl;

return 0;

}

解决方案

cout<<a 默认进行处理,输出a所指向的字符串。
写成这样,cout<<(void *)a 因为void型, cout没法输出,只能乖乖输出指针

解决方案二:

 因为cout对char*重载了,会输出字符串而不是地址
用cout << (int)*a
看看

解决方案三:

char *a
因为输出就是字符串,不是地址,需要输出字符串的地址 需要输出首地址

cout<< &a[0]

解决方案四:

首先要明确a是一个字符指针变量,那么(void *)a就是求的这个指针的地址

时间: 2024-11-17 04:17:38

c++-为什么a,b的地址取不到的相关文章

数组首地址取地址

一.问题来由 普通指针可被修改导致地址偏移: #include <iostream> using namespace std; int main(int argc,char *argv[]) { int a = 6; int *p = &a; //p存放一个地址,pp存放p的地址,上面的代码可以让p存放的地址偏移 cout<<&a<<endl; int *pp = (int *)&p; cout<<p<<endl; (*p

如何获取Windows Server 2012 Hyper-V 虚拟机IP地址

这是一个简单的问题,今天恰巧有人问起,这里总结一下:如果不通过VMM进行管理有两个方法,可以获得虚拟机的IP地址. 第一种方法当然比较容易想到,就是通过Hyper-V虚拟机管理器的界面,选择被管理的虚拟机然后直接通过网络选项卡就可以看到了,如下图: 当然,如果需要一个更简单的方式,当然是通过Hyper-V RSAT提供的Powershell 管理工具命令行了,要知道在Windows Server 2012中针对Hyper-V提供了164条Cmdlet,相当丰富啊. 想要知道Hyper-V中某个虚

C++:引用和地址运算符

在C++中,&这个符号有两个含义,一种含义是取某个变量或者对象的地址.这个地址是指内存地址,这个地址取到之后,可以赋给一个指针.例如下面这样 int a=5; int *p=&a; 这就表示,有一个变量为a,其值为5,然后有一个指针变量p,它保存了变量a的地址. 但C++中,&还有一个用途是定义引用常量.引用其实就相当于是一个变量的别名,从它的功能上说与指针很类似,但使用起来比较简便. 我们先来看如何定义一个引用 int a=5; int &b=a; 这就表示,有一个变量为

ASA防火墙上如何进行ARP绑定

目前我公司使用的网络全是静态IP地址,在公司里面有一台ASA5505防火墙,应领导要求,在该防火墙上面要限制某部份用户不能使用某些应用(如QQ农场等),而领导的计算机不做任何限制.为了实现这些功能,我们需要在ASA 5505防火墙上面做ARP绑定,然后再使用访问控帛列表来对这些IP地址与MAC地址进行限制.具体配置很简单,那么下面就带大家一起来看看如何在ASA 5500防火墙上面配置ARP绑定呢? ciscoasa# conf t ciscoasa(config)# name 192.168.0

教你如何在Word中听歌看片

上有政策,下有对策.是天国的老话了,老板说上班只能工作不能听歌看片,工作之余偶尔消遣下也还是要防备着老板的.三联小编教你一招.嘿嘿,上班的话word是必备软件吧,我们可以再word中做些小动作.高手教你如何在Word中听歌看片. 只要在word中稍加设置,就能让Word声色俱全.能说会唱.现在笔者就以播放一首MTV为例介绍操作方法.(笔者使用的是Word2003,Windows XP2) 一.在Word文档中添加媒体播放器 运行Word,新建一个空文档.点击"插入→对象"菜单命令,打开

我们来谈谈面向指针编程的那些事

面向对象编程,面向设计模式编 程(亦即设计模式),面向接口编程,面向模板编程(亦即泛型编程),面向函数编程(亦即函数式编程),面向多核时代的并行编程,面向大数据的机器学习编 程--这么多年,大家要面向的东西已经够多了,然而我看到的现象是,很多编程语言让大家面向 xxx 的同时在竭力回避指针.我可不想面向这么多东西,所以我只好加入指针的黑暗势力.我要不自量力的来写一篇<面向指针编程>作为投名状,借以表示我与软件世 界的光明势力的彻底决裂. 这个世界上,提供指针的编程语言很少,这样的语言有汇编语言

C++参数传递方式

C++中的参数传递有三种方式:传递变量名,传递指针,传递引用.即值传递,指针传递和引用传递. 1.将变量名作为形参和实参 这种情况下传给形参的是变量的值,传递是单向的,就是说如果在执行函数期间形参的值发生变化,并不会传回给实参,这就是所谓的值传递.因为在调用函数期间,形参和实参并不是同一个存储单元.简单示例如下: 01 #include "stdafx.h" 02   03 #include <iostream> 04   05 using namespace std; 0

语言 面试题-一道面试题,不是很清楚这个例子怎么解答,求大神帮助.

问题描述 一道面试题,不是很清楚这个例子怎么解答,求大神帮助. 提问是 这段代码有什么问题, 有什么解决思路.(我其实连问题都没看出来,代码可以编译) // Memory-mapped peripheral#define STATUS_REG_ADDR 0x12345678 // 32-bit status register#define DATA_REG_ADDR 0x1234567C // 32-bit data register // Status register bits#define

arm平台函数传递参数,反汇编实例分析

测试前,需要了解下sysv的传参方式: 1.输入参数通过r0-r3传递,多余的放入堆栈中:返回值放入r0,不够的话放入{r0,r1}或者{r0,r1,r2,r3},比如: int foo(int a, int b, int c, int d), 输入:r0 = a, r1 = b, r2 = c, r3 = d,返回:r0 = 类型为int的retvalue int *foo(char a, double b, int c, char d), 输入:r0 = a, r1用于对齐(double 要