为什么指针返回字符串而不是第一个字符,因为指针只存储第一个字符的地址? 我是C++新手。据我所知,在上述情况下,名称[0]应该是'R'的索引。 我想我错过了或缺乏知识。 请帮帮我 #包括 使用名称空间std; int main(){ 字符*名称[]={ “罗汉”, “萨米”, “塞缪尔”, “亨利” }; //预计R将打印出来,而不是Rohan 库特

为什么指针返回字符串而不是第一个字符,因为指针只存储第一个字符的地址? 我是C++新手。据我所知,在上述情况下,名称[0]应该是'R'的索引。 我想我错过了或缺乏知识。 请帮帮我 #包括 使用名称空间std; int main(){ 字符*名称[]={ “罗汉”, “萨米”, “塞缪尔”, “亨利” }; //预计R将打印出来,而不是Rohan 库特,c++,c,string,pointers,char,C++,C,String,Pointers,Char,据我所知,在上述情况下,名称[0]应该是“R”的索引 names[0]不是索引。它是指针。它指向字符串文本中的charR 当指针插入到字符流中时,行为不是流化指向的对象 将指向char的指针插入字符流时,假定它是指向以null结尾的字符串的指针,其行为是流式传输整个字符串。您应该相应地调整期望值 另外,自C++11以来,该程序的格式不正确,因为字符串文字不能隐式转换为char*您只需将括号*名称[0] [代码]: #include<iostream> #include<stri

据我所知,在上述情况下,名称[0]应该是“R”的索引

names[0]
不是索引。它是指针。它指向字符串文本中的char
R

当指针插入到字符流中时,行为不是流化指向的对象

将指向char的指针插入字符流时,假定它是指向以null结尾的字符串的指针,其行为是流式传输整个字符串。您应该相应地调整期望值


另外,自C++11以来,该程序的格式不正确,因为字符串文字不能隐式转换为
char*

您只需将括号*名称[0]

[代码]:

#include<iostream>
#include<string>
using namespace std;
int main(){
    char* names[] = {
        "Rohan",
        "Sammy",
        "Samuel",
        "Henil"
    };
   
       
    //   Expected R to be printed and not Rohan
       cout<<*names[0]<<endl;
    return 0;
}
#包括
#包括
使用名称空间std;
int main(){
字符*名称[]={
“罗汉”,
“萨米”,
“塞缪尔”,
“亨利”
};
//预计R将打印出来,而不是Rohan

cout按名称引用数组将衰减为指向数组第一个元素的指针。因此,
名称
名称[0]
相同,因此
*名称
名称[0]相同
,它是数组中的第一个
char*
元素,而不是数组中第一个字符串的第一个
char

names
是一个数组。因此,在
*names
中,names
已衰减为指针。因此,它的类型为
char**
。仅供参考,您的代码不会在C++11及更高版本中编译,因为您无法使用它为非常量
char*
指定字符串文字。请改用
const char*
替换:
const char*names[]={“Rohan”,…};
#include<iostream>
#include<string>
using namespace std;
int main(){
    char* names[] = {
        "Rohan",
        "Sammy",
        "Samuel",
        "Henil"
    };
   
       
    //   Expected R to be printed and not Rohan
       cout<<*names[0]<<endl;
    return 0;
}