char * 的意思是什么?

5

那么...假设我有这样一个函数...

int function( const char *c )
{
 //do something with the char *c here...
}

char *c 是什么意思?我大概知道字符的一般含义,但是不明白 * 是什么意思,以及它如何改变含义。


2
这是一个指针。如果你还不理解的话,需要从书籍或讲座中学习,而不能在几行文字中解释清楚。 - user684934
可能是如何在C语言中使用指向指针的指针?的重复问题。 - phuclv
9个回答

6
这意味着这是一个指向 char 类型数据的指针。

1
“char类型的指针”是不太常见且可能有点令人困惑的术语。使用“指向char的指针”,甚至是“指向char类型指针的指针”会更好一些。 - Thomas Padron-McCarthy

6

char *c 表示 c 是一个指针。c 指向的值是一个字符。

所以你可以这样说 char a = *c

另一方面,const 在这个例子中表示 c 指向的值不能被改变。 所以你可以这样说 c = &a,但你不能这样说 *c = 'x'。如果你想要一个指向常量字符的常量指针,你需要这样写:const char* const c


2

这是一个指向字符的指针。如果您想了解C中的指针,可以阅读有关指针的无数页面来帮助您学习。例如,http://boredzo.org/pointers/


2

指向字符的指针。也就是说,它保存了一个字符所在的地址。


2

1

这是一个指向 char 类型的指针。例如,此函数可以获取 char 的地址并修改 char,或者复制指向字符串的指针。这就是我的意思:

char c = 'a';
f( &c );

这将传递c的地址,以便函数能够更改c字符。

char* str = "some string";
f( str );

这将“some string”传递给f,但f无法修改str

对于C++来说,这是非常基础的事情,但高级语言(例如Java或Python)却没有。


1

这意味着参数应该是一个指向字符的pointer

你也可以使用*来取消引用它。


1
你可能想阅读常量正确性页面,以便更好地了解指针和常量。

1

http://cslibrary.stanford.edu/ 是我发现的最好的学习C语言指针的资源。阅读所有与指针相关的PDF文件,还可以观看Binky指针视频。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接