繁体   English   中英

为什么char * x不是char x?

[英]Why char *x not char x?

我有一个密码

#include <iostream>
using namespace std;

void foo(char *name){ // ???
    cout << "String: " << name << endl;
}

int main(){
    foo("Hello");
    return 0;
}

我不知道为什么我不能使用“字符名称”。 请帮忙。

干杯,

char a只是单个字符,而char*是指向字符序列(字符串)的指针。

当您调用foo("Hello") ,您传入的字符串文字(严格来说是char的数组)可以转换为char的指针。 因此foo必须接受char*而不是char因为否则类型将不匹配。

char name是单个字符

char* name是指向堆中字符的指针,如果分配正确,则可以是字符数组。

字符串可以表示为一个char数组。 您可以使用char *指针来引用该字符串。 您可以将char namefoo('c') ,因为这是一个char。

char表示单个字符。 char *是指向内存中包含一个或多个字符(字符串)的地址的指针 如果您使用的是C ++,则可以考虑使用std::string因为它可能会稍微熟悉一些。

因为一个简单的char只是一个字符,例如'c','A','0',etc. char*是指向内存中存储一​​个或多个char的区域的指针。

在C和C ++中,字符串通常表示为以空字符结尾的字符数组。

C和C ++中的数组通常表示为指向第一项的指针。

因此,字符串被表示为指向字符串中第一个字符的指针,这就是char *name含义。 这意味着name是指向字符串中第一个字符的指针。

您可能想读一点C / C ++中的指针,数组和字符串,因为这是基本知识!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM