c++字符指针与字符串的问题
来源:互联网 发布:Php并发curl 编辑:程序博客网 时间:2024/04/30 05:03
char *z;
z="abcd";这段代码,实际上是将字符串abcd中a的地址赋给了指针z。因为在执行z="abcd"的时候,程序首先在内存分配一个可供字符串abcd存放的内存空间,再将指针z设置为指向这段内存空间的第一个地址,也就是存放字符a的地址。char*a;a="abcd";int b=5,*a=&b;cout<<a<<endl;"abcd"是一个字符串,在内存中肯定有自己的地址空间,char *a = "abcd"就是把这个地址空间赋给a保存的。"abcd"本身就是一个地址,因为在c语言中字符串就是对应于一个指针。int b=5; *a = &b的这个,&b得到的是一个int*,是一个int型的指针,然后还要赋值给*a的话,可以知道a的类型是int**,就是指向指针的指针,无论如何,也是指针。所以输出的是地址值。a作为char*的时候,送给cout的时候实际上是cout按字符串输出,你也可以看到a实际的地址指针值如"abcd"是一个字符串,在内存中肯定有自己的地址空间,char *a = "abcd"就是把这个地址空间赋给a保存的。"abcd"本身就是一个地址,因为在c语言中字符串就是对应于一个指针。int b=5; *a = &b的这个,&b得到的是一个int*,是一个int型的指针,然后还要赋值给*a的话,可以知道a的类型是int**,就是指向指针的指针,无论如何,也是指针。所以输出的是地址值。a作为char*的时候,送给cout的时候实际上是cout按字符串输出,你也可以看到a实际的地址指针值如char *a="123";cout<<a<<endl;输出的是a里面的字符串内容而不是a的地址,原因是C++的<<符号的功能,聪明的把字符串指针当成字符串内容输出。如果想打出a的地址,要强转字符串为void*的指针再输出,这样出来的是地址,本身他们就是一个地址
0 0
- c++字符指针与字符串的问题
- C语言字符串指针变量与字符数组的区别
- C语言字符串指针变量与字符数组的区别
- C语言字符串指针与字符数组的区别
- C 字符串指针与字符数组
- 字符与指针的问题
- 字符指针与字符串
- 字符、字符数组(字符串)与指向字符串的指针
- 字符指针指针与字符串
- 字符指针与字符串变量的转换
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 字符串指针与字符数组的区别
- 什么叫共轭先验或者共轭分布?
- GDB下查看内存命令(x命令)
- 中秋节晒“全家福”赢大奖活动获奖名单公布啦!!!
- CentOS6.4安装mplayer
- 引用返回通常用
- c++字符指针与字符串的问题
- Eclipse中高亮显示相同的变量
- 堆和栈的区别(转过无数次的文章)
- Socket同步异步学习
- Java深入 - Java 序列化
- Entity Framework 教程
- 面试题2——JAVA中方法和变量在继承中的覆盖和隐藏
- Leetcode: 4Sum
- case when then的用法