您的位置:首页 > 编程语言 > C语言/C++

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

2014-08-05 15:03 686 查看
#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\n",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*类型的才可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐