牛骨文教育服务平台(让学习变的简单)
博文笔记

c++ 指针值和指针地址的输出&指针和数组保存字符串的区别

创建时间:2014-08-05 投稿人: 浏览次数:2436
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
int main(){
int a=5;
int *b=&a;
cout<<&a<<endl;
cout<<b<<endl;
cout<<&b<<endl;

cout<<"---"<<endl<<endl;
char c[10]="hello";
cout<<c[0]<<endl;
cout<<&c[0]<<endl;
cout<<&c<<endl;
cout<<static_cast<const void*>(c)<<endl;
cout<<c<<endl;

cout<<"---"<<endl<<endl;
char *d="world";
cout<<d[0]<<endl;
cout<<&d[0]<<endl;

cout<<&d<<endl;

      //cout<<*(&d)<<endl;

printf("%p ",d);
cout<<static_cast<const void*>(d)<<endl;
cout<<d<<endl;
return 0;

}


1、数组和指针的区别:

在初始化字符串的时候,指针指向的是在常量数据区的常量字符串,但数组则是在栈中开辟的一段内存来暂时存下字符串

这个从

cout<<&c<<endl;
cout<<static_cast<const void*>(c)<<endl; 输出的地址相同,但是下面的例子不一样得知。

cout<<&d<<endl;
cout<<static_cast<const void*>(d)<<endl;

2、指针地址和指针值

cout该函数在重载过之后,输出指针(就是输出字符串首地址)就是输出其字符串。

此时指针代表其字符串首地址可以从//cout<<*(&d)<<endl; 输出world可以得知(可以试试)

但是怎么输出指针本身的地址呢,在c语言中可以有%p的格式,但是在C++中只能借助指针强类型转型成void*类型的才可以了。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。