c++取字符数组地址为啥要加& 而int的不用直接p就好了

[复制链接]
查看11 | 回复4 | 2013-3-1 12:40:05 | 显示全部楼层 |阅读模式
1 name是C++ 字符数组的定义。 而C/C++在的字符数组 定义应该是 连续的字符元素存储的内存空间的首地址。 因此数组名name等效于一个char的内存地址。(实际除去语法定义有一定特殊性外,基本就等同于char*)。 按照这个说法,name也就等于&(name[0]), 加括号只是为了让你能逻辑上好理解,不加也行。2 c/c++没有标准的字符串类型。 对字符串的定义是“以char*为首地址,以'\0'字符为结束标志的连续存储空间的值“ 因此,当处理char*时,会有两种可能:
a 代表一个字符串。
b 代表一个字符的内存地址。 在C++的标准输...
回复

使用道具 举报

千问 | 2013-3-1 12:40:05 | 显示全部楼层
我想没那么复杂吧,你是被COUT<<这货搞晕了,上下两个P你绝对取的是数组的地址。问题出在打印输出上,<<是重载运算符(这个你懂吧,我是学C的不甚了解),cout<<会根据输入调用不同的方法:如:char *p=&name[0];cout<<p<<endl;//翻译一下应该是类似printf("%s",p);再如int *p=&name[0]...
回复

使用道具 举报

千问 | 2013-3-1 12:40:05 | 显示全部楼层
我们用字符数组的首地址来表示字符串是从某地址开始,直到遇到'\0'表示字符串结束所以&name[0]=name=&name...
回复

使用道具 举报

千问 | 2013-3-1 12:40:05 | 显示全部楼层
数组的地址就是第一个元素的地址char型的数组。输出地址就是输出该数组...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行