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*类型的才可以了。
#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*类型的才可以了。
相关文章推荐
- 数组、指针和字符串:指针变量的声明、地址相关运算--“*”和“&”
- 面试题--字符串指针与字符串数组的区别char* st="abc;与char* str[]="abc";的异同
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别 (完整代码)
- [C/C++]数组与指针——a,a[0],&a,&a[0]区别小结
- char * 与 char [] 区别,char *[] 与 char[][]区别。字符串指针的数组与二维char数组区别。字符串常量赋予指针与字符数组区别。"字符串"等价于其首元素"字"的地址
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别
- C++学习笔记(一)--整形,std输出,浮点数,数组,字符串,结构,指针,循环
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别 (完整代码)
- 通过数组保存字符串和通过指针保存字符串的区别
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别 (完整代码)
- 数组与指针保存字符串的区别
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别
- 鸡啄米:C++编程入门系列之二十七(数组、指针和字符串:指针变量的声明、地址相关运算--“*”和“&”)
- 从C++指针定义字符串和数组定义字符串区别到C++堆和栈区别
- 【C++基础】 指针&字符串&数组
- 一道二级C题引发的思考-- c++函数传递指针的本质 与 字符串指针与字符数组的区别
- C++编程入门系列之二十七(数组、指针和字符串:指针变量的声明、地址相关运算--“*”和“&”)
- More Effective C++----(1)指针与引用的区别 & (2)尽量使用C++风格的类型转换 & (3)不要对数组使用多态
- 详解C++中指针(*)、取地址(&)、解引用(*)与引用(&)的区别 (完整代码)
- C++(typedef、一维数组转成二维数组、C和C++区别、成员地址成员指针、构造析构函数、this指针、const用法、显示时间、const用法)