c++ 指针值和指针地址的输出&指针和数组保存字符串的区别
#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<<static_cast<const void*>(d)<<endl;
cout<<d<<endl;
return 0;
#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*类型的才可以了。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 如何打印指针的值
- 下一篇: C语言 printf 格式输出指针总结