我是编程新手。我正在学习 C 作为我的第一门编程语言。我发现了一些奇怪的东西。
我了解到在 C 中我们可以将字符串表示为这样的字符序列(使用 char 数组):
char status[10] = "Married";
我了解到这种方法的问题是我们必须在编译期间告诉 status
数组的大小。
但现在我知道我们可以使用 char
指针来表示 string
像 -
char status[10] = "Married";
char *strPtr;
strPtr = status;
我没有正确理解它。我的问题是 -
如何使用
strPtr
获取索引 4 处的字符(即 Married 中的 i)?在
status
中有一个空字符(\0
)在代表的
数组 -string
的末尾charM
-a
-r
-r
-i
-e
-d
-\0
。所以通过使用空字符(\0
)我们可以理解字符串的结尾。当我们使用strPtr
时,如何理解string
的结尾?
最佳答案
char *strPtr;
strPtr = status;
现在你的指针 strPtr
指向数组中的第一个字符,你可以这样做
int i =0;
while( strPtr[i] != '\0')
{
printf("%c ",strPtr[i]);
i++;
}
*strPtr
被称为解引用指针以获取存储在指针指向的位置的值。
请注意
strPtr[4] = *(strPtr +4);
两者都会得到存储在数组索引 4 处的值。
注意指针和数组名的区别:
----------------------------------
| s | t | r | i | n | g | \0 |
----------------------------------
|
strPtr
status
strPtr++
将使您的指针指向数组中的下一个元素。
| s | t | r | i | n | g | \0 |
----------------------------------
|
strPtr
而您不能对数组名称执行此操作
status++
是不允许的,因为 an array is not a modifiable lvalue .
关于c++ - 理解 char array[] 和 string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29366782/