2 ymr00 ymr00 于 2014.10.07 22:18 提问

C 字符串指针内存问题

char * str="new";

str 的值是否是“new”字符串在常量存储区的地址?
用cout<<str ;直接输出结果为什么是new ?

2个回答

BillyThe
BillyThe   2014.10.07 22:39

嗨,

str确实是指向new字符串的指针,而且cout<<str输出new没有任何问题的。

猜测的你的疑惑:为什么不输出new字符串地址值?

cout使用<<对待输出的不同数据类型对象操作进行了重载,用cout<<输出str时,cout自动解析为输出str指向的字符串值,即为new。
若想输出new字符地址值,可以先将str转换为void *类型,cout就只能输出地址值了

按照标题,说是C的问题,那么可以使用c I/O printf测试如下两种输出(cout为c++ iostream):

1: printf("%s\n", str);
2: printf("%d\n", str);

第一个语句输出结果应该和cout一样为new
第二个语句输出应该为new字符串地址值。(如果报错,将str强制类型转换为int)

希望能帮到你

u010136832
u010136832   2014.10.09 09:05

问什么要把C和C++ 弄到一起说呢?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言字符串指针(指向字符串的指针)
C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在《C语言字符数组和字符串》中已经进行了详细讲解,这里不妨再来演示一下: #include int main(){ char str[] = "http://c.biancheng.net"; int len = strlen(str), i; //直接输出字符串 printf("%s\n",
C语言字符指针赋值的问题
#include &amp;lt;stdio.h&amp;gt;  void Initialize (char * a, char * b) {  a[0] = 'T'; a[1] = 'h'; a[2] = 'i';  a[3] = 's'; a[4] = ' '; a[5] = 'i'; a[6] = 's';  a[7] = ' '; a[8] = 'A'; a[9] = '\0';  b = a;  b[...
字符指针与字符数组真正的区别
本文从字符串指针与字符串数组的例子开始,讲述了C语言中使用内存的不同方式,以及他们与Linux内存布局的关系。并使用Linux下的工具对想法进行了验证。
c语言 如何用指针来处理字符串?
一字符指针 1字符指针输出字符串 2字符指针处理字符串 3字符数组与字符指针处理字符串有何不同 二指针数组读者,你好! 如果你精通C,希望能得到你的斧正;如果你是初学者,希望能对你有所帮助。 加粗的是一些我认为比较重要的内容。一、字符指针1、字符指针输出字符串为了更好的理解这部分内容,我们先看一个例子:#include <stdio.h> int main() { char *ps
C、C++中字符串和字符指针之间的转换
1、CString 和 int 之间的互相转化          CString str = _T("123");         int i = _ttoi(str);         int i = 123; CString str; str.Format(_T("%d"),i) 2、 CString 和 char*        CString str("123")
C语言之字符串与指针
转载自:http://blog.chinaunix.net/uid-26921272-id-3325954.html C语言之字符串与指针 1、  字符串的表示形式 在C语言中,我们可以用两种方式访问字符串 (1)       用字符数组存放一个字符串,然后输出该字符串。 main(){    char string[]="I love China!";
C/C++内存问题检查利器—Purify (一)
C/C++内存问题检查利器——Purify 陈皓一、           引言 我们都知道软件的测试(在以产品为主的软件公司中叫做QA—Quality Assessment)占了整个软件工程的30% -50%,但有这么一种说法,即使是最优秀测试专家设计出来的测试案例,也无法彻底地检测到内存上的问题。     使用C/C++开发的团队一定有被其内存问题折磨过的
c语言:字符串与字符串指针变量
字符数组和字符指针变量都能实现字符串的存储和运算,但它们之间是有区别的,主要有以下几点: 1.字符数组由若干个元素组成,每个元素存放一个字符,而字符串指针变量中存放的是地址(字符串的首地址)。 例: #include"stdio.h" void main() { charstring1[] = "i am a student"; char*string2 = "i am a
c语言中输出字符指针相关问题
一、例如定义一个 char * p = "hello";的字符指针。 首先搞清楚在c语言中没有字符串的类型,所以对字符串操作,有两种形式:可以用字符指针(为什么不叫字符串指针,我个人觉得,字符指针针对的是单个字符的操作,即指针操作,所以就叫它字符指针吧。。。),或者字符串数组(这里不在讨论字符串相关问题,前面博客有讨论过)这里的指针变量p,系统会为其重新分配内存,区别字符串数组(不分配内存)
C语言常见的内存错误总结
作者:朱克锋     对c语言的程序员来说,管理和使用内存可能是个困难的、容易出错的任务.与存储器有关的错误属于那些最令人惊恐的错误,因为他们经在运行的时间和空间上都在距错误根源很远的地方才表现出来,程序在最终失败之前已经运行了很长时间,而且程序终止的位置距离出错的位置已经很远了。所以这类错误很难被查出来,也很难发现。但是对于常见的内存错误如果很熟悉的话就会更早的发现与避免错误的发生。下面我总结