【发布时间】:2015-06-04 16:23:16
【问题描述】:
我是编程新手。我正在学习 C 作为我的第一门编程语言。我发现了一些奇怪的东西。
我了解到,在 C 语言中,我们可以将字符串表示为这样的字符序列(使用 char 数组):
char status[10] = "Married";
我了解到这种方法的问题是我们必须在编译期间告诉status数组的大小。
但现在我知道我们可以使用 char 指针来表示 string 之类的 -
char status[10] = "Married";
char *strPtr;
strPtr = status;
我没有正确理解它。我的问题是 -
如何使用
strPtr获取索引 4 处的字符(即 Married 中的 i)?在
status中,string的末尾有一个空字符 (\0),由char数组表示 -M-a-r-@987654335 @-i-e-d-\0。所以通过使用空字符(\0)我们可以理解字符串的结尾。当我们使用strPtr时,如何理解string的结尾?
【问题讨论】:
-
1)
*(strPtr+4)会给你字符i。 2)strPtr也指向status,所以它最后会有(相同的)空字符(\0)。 -
由于数组衰减为指向其第一个元素的指针,因此数组和指针通常可以互换使用,因此在数组上使用解引用运算符将起作用,就像在指针上使用数组索引运算符一样。此外,
*(arrayOrPointer + X)等价于arrayOrPointer[X]。
标签: c++ c arrays pointers char