Kaj*_*olK 16 c c++ arrays pointers char
我是编程新手.我正在学习C作为我的第一门编程语言.我发现一些奇怪的东西要理解.
我已经知道在C中我们可以将String表示为像这样的字符序列(使用char数组):
char status[10] = "Married";
Run Code Online (Sandbox Code Playgroud)
我已经了解到这种方法的问题是我们必须status在编译期间告诉数组的大小.
但是现在我已经知道我们可以使用char指针来表示string 类似 -
char status[10] = "Married";
char *strPtr;
strPtr = status;
Run Code Online (Sandbox Code Playgroud)
我不理解它.我的问题是 -
我怎样才能在索引4(即我在Married)中使用strPtr?
在数组表示的末尾status有一个空字符(\0)- - - - - - - .因此,通过使用null字符(),我们可以理解字符串的结尾.当我们使用时,我们怎样才能理解结束?stringcharMarried\0\0strPtrstring
Gop*_*opi 14
char *strPtr;
strPtr = status;
Run Code Online (Sandbox Code Playgroud)
现在你的指针strPtr指向数组中的第一个字符,你可以这样做
int i =0;
while( strPtr[i] != '\0')
{
printf("%c ",strPtr[i]);
i++;
}
Run Code Online (Sandbox Code Playgroud)
*strPtr 被称为取消引用指针以获取存储在指针指向的位置的值.
记下来
strPtr[4] = *(strPtr +4);
Run Code Online (Sandbox Code Playgroud)
两者都将获得存储在数组索引4处的值.
注意指针和数组名称之间的区别:
----------------------------------
| s | t | r | i | n | g | \0 |
----------------------------------
|
strPtr
status
Run Code Online (Sandbox Code Playgroud)
strPtr ++ 将使您的指针指向数组中的下一个元素.
| s | t | r | i | n | g | \0 |
----------------------------------
|
strPtr
Run Code Online (Sandbox Code Playgroud)
而您不能为阵列名称执行此操作
status++不允许,因为数组不是可修改的左值.