关于c++指针的问题,,在线等。。

[复制链接]
查看11 | 回复5 | 2009-4-10 17:00:21 | 显示全部楼层 |阅读模式
在c++中指针的一些问题。。
你好,请教一个问题,
#include
#include
char main()
{
char *p="abcdef";
cout<<setw(2)<<*p<<endl;
cout<<p<<endl;
}
输出结果是:
a
abcdef
为什么网上很多人都说这个程序当中是把“abcdef”的地址赋给p。。
为什么输出的p却是abcdef。。按道理p里面存储的应该是字符串的首地址啊,而不应该是字符串本身。。

回复

使用道具 举报

千问 | 2009-4-10 17:00:21 | 显示全部楼层
同样的道理char str[10] = "abcdef";同样str存的也是这个char数组的指针,但是cout<<str;时,也会输出abcdefp存的是字符串首地址没错字符串的几个不同层面的含义1、源文件中出现的 "abc" 这样的字符串这种叫做字符串字面常量,只在代码中有效。这种字面常量具有内部链接性,编译器会在每个编译单元内部为这个字符串分配空间存储。因为是常量,它所位于的内存空间通常是不可写的。2、一个以 '\0' (ASCII NUL字符)结束的字符数组。或者更确切的说,一个包含了各种 ASCII 可打印字符的、以 '\0' 为结束的字符数组。这是 C 语言语义上的字符串定义,不涉及编译、链接的特性,...
回复

使用道具 举报

千问 | 2009-4-10 17:00:21 | 显示全部楼层
cout<<p<<endl;我个人理解的意思如下operator<<(char* p){while(*p!='\0'){ printf("%s",*p); p++;}}...
回复

使用道具 举报

千问 | 2009-4-10 17:00:21 | 显示全部楼层
给你看个例子吧,希望对你有点启发。#include #include char main() { char A[10]="abcdef";char *p;p=A;cout<<setw(2)<<A[1]<<endl;cout<<setw(2)<<*p<<endl; cou...
回复

使用道具 举报

千问 | 2009-4-10 17:00:21 | 显示全部楼层
c语言char型变量不同于其他基本类型变量,它使用char型数组来表示字符串,由于数组与指针具有相通的关系,所以char型的指针可以代表整个字符串,尽管实际上它指向的是一个字符数组的首地址。...
回复

使用道具 举报

千问 | 2009-4-10 17:00:21 | 显示全部楼层
"abcdef"是一个常量字串,将常量字串赋给p指针,即是将常量字串的首地址存在在指针变量中cout << p 表示将p字符指针的内容输出,相当于printf("%s", p);...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行