首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指针和字符数组

指针和字符数组
EN

Stack Overflow用户
提问于 2011-07-16 03:00:08
回答 4查看 575关注 0票数 0

我觉得这是个很简单的问题..。我试着找出具体的细节,但是找不到。代码:

代码语言:javascript
复制
#include <iostream>
using namespace std;

int main() {
    char * veggie_burger = "delicious";
    cout<<endl<<veggie_burger<<endl;
    for (int count = 0; count < 9; count++){
        cout<<veggie_burger[count]
            <<" @: "
            <<&veggie_burger[count]
            <<endl;
    }
    cout<<&veggie_burger;

    return 0;   
}

这将输出

美味

D@美味

E@ elicious

L@l

我很好

C@

I@ ious

O@ ous

U@ us

S@s

001DF7D4 (或任何地方)]

&veggie_burger[n]&veggie_burger到底有什么区别?指针不应该指向内存中&veggie_burger[3]存储'l‘而不是在'l’处开始字符序列的位置吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-16 03:10:05

veggie_burger[n]*(veggie_burger+n)完全相同,因此&veggie_burger[n]的意思是veggie_burger + n,或指向nth字符的指针。它具有char*类型,因为它是字符的地址。

另一方面,&veggie_burger是指针的地址。它有char **类型。

票数 4
EN

Stack Overflow用户

发布于 2011-07-16 03:04:25

在这种情况下,&veggie_burgerchar **类型的,它有指针的地址。换句话说,指针在内存中的位置。

&veggie_burger[n]是数组的第n个成员的地址。不是它的价值。

不要将指针与数组混淆。例如:

代码语言:javascript
复制
char veggie_burger[] = "delicious";

这是一个数组,veggie_burger == &veggie_burger == &veggie_burger[0]

票数 2
EN

Stack Overflow用户

发布于 2011-07-16 03:21:26

首先,

代码语言:javascript
复制
char * veggie_burger = "delicious";

是个坏主意,最不可取;相反地使用:

代码语言:javascript
复制
const char * veggie_burger = "delicious";

&veggie_burger只是veggie_burger的一个地址;它与它指出的字符串文本无关。

&veggie_burger[n]有两个部分,第一部分是veggie_burger[n];它被计算为字符串文本的nth元素。第二个是&<element>,它意味着nth元素的地址。

话虽如此,&veggie_burger[3]将地址存储在字母l上。i.e

代码语言:javascript
复制
&veggie_burger[3] ==> (veggie_burger + 3)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6714995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档