Code Bye

一段简单小代码的问题

 

#include “stdafx.h”

#include “iostream.h” 
#include<cstdlib>

void main(){
int* b=(int*)&b;

cout<<&b<<endl<<b<<endl<<*b;

system(“PAUSE”);

}

这段代码为什么打印结果是16进制的数,大家帮我解释解释这段代码,非常的感谢大家

输出的是地址 你以为呢
10分
输出指针当然就是输出地址啊,也当然就是16进制的啊。
char *例外。
cout会根据操作数的类型,进行打印
string s;
cout<<s;      //打印类对象中字符串
操作数是地址,一般就按16进制打印
引用 4 楼 zhangxiangDavaid 的回复:

操作数是地址,一般就按16进制打印

为什么要加上括号呢?

20分
(int*)是强制类型转换
地址是没有类型的,指针才有
引用 6 楼 zhangxiangDavaid 的回复:

(int*)是强制类型转换
地址是没有类型的,指针才有

地址跟指针不是一个概念吗?

引用 7 楼 qq_20127507 的回复:
Quote: 引用 6 楼 zhangxiangDavaid 的回复:

(int*)是强制类型转换
地址是没有类型的,指针才有

地址跟指针不是一个概念吗?

指针是带类型的地址

类型指定了这片内存的长度
引用 9 楼 zhangxiangDavaid 的回复:

类型指定了这片内存的长度

地址本身是没有内存长度的,而指针是规定好了存储的长度的了(数据类型),可以这么理解吗?

10分
引用 10 楼 qq_20127507 的回复:
Quote: 引用 9 楼 zhangxiangDavaid 的回复:

类型指定了这片内存的长度

地址本身是没有内存长度的,而指针是规定好了存储的长度的了(数据类型),可以这么理解吗?

指针有一块内存,里面存储的是地址,地址是一个字节内存的编号

引用 10 楼 qq_20127507 的回复:
Quote: 引用 9 楼 zhangxiangDavaid 的回复:

类型指定了这片内存的长度

地址本身是没有内存长度的,而指针是规定好了存储的长度的了(数据类型),可以这么理解吗?

可以


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明一段简单小代码的问题