https://blog.csdn.net/m0_63834988/article/details/133690334?spm=1001.2014.3001.5501
【重拾C语言】七、指针(二)指针与数组(用指针标识数组、多维数组与指针、数组指针与指针数组)-CSDN博客
https://blog.csdn.net/m0_63834988/article/details/133753904?spm=1001.2014.3001.5501
C语言中没有特定的字符串类型,通常是将字符串放在一个字符数组中。字符串实际上是由一系列字符组成的,以空字符('\0'
)作为结束标志。可以通过声明字符数组来创建字符串,并使用数组中的元素来存储字符串的每个字符。
创建一个长度为20的字符数组 str
,并将字符串 "Hello, world!" 存储在数组中:
char str[20] = "Hello, world!";
(注意:需要确保数组的长度足够大,以容纳字符串及其结束标志)
字符串:
字符串常量
printf(“%d\n”,m);
printf(“Hello world”);
字符串变量
char str[10];
strcpy(str,“hello”);
使用字符数组的方式来声明和初始化一个字符串数组,其中每个元素都是一个字符串:
char strings[][20] = {
"Hello",
"World",
"C programming"
};
上述代码中,strings
是一个包含三个字符串的数组。每个字符串可以具有不同的长度(数组的每个元素都需要足够大,以容纳对应的字符串及其结束标志)。
注意:字符串数组中的每个字符串都以空字符结尾。在使用字符串数组时,需要注意字符串的结束位置。
通过使用指针,可以更加灵活地操作和处理字符串。指针的优势在于可以直接访问字符串中的字符,而不需要通过数组索引来访问。
char *strPtr; // 声明一个字符指针
char *strPtr = "Hello"; // 初始化一个指向字符串常量的指针
可以声明一个字符指针 strPtr
,然后将其初始化为指向字符串常量 "Hello" 的起始位置。字符串常量是以字符数组的形式存储的,因此可以使用指针来访问其中的字符。
使用指针可以遍历字符串中的每个字符。
char *strPtr = "Hello";
while (*strPtr != '\0') {
printf("%c", *strPtr);
strPtr++; // 指针递增,指向下一个字符
}
在上述示例中,通过检查指针所指向的字符是否为结束标志 '\0'
,循环逐个打印字符串中的字符,并通过递增指针来访问下一个字符。
char source[] = "Hello";
char destination[10];
char *srcPtr = source;
char *destPtr = destination;
while (*srcPtr != '\0') {
*destPtr = *srcPtr;
srcPtr++;
destPtr++;
}
*destPtr = '\0'; // 在目标字符串末尾添加结束标志
通过逐个复制源字符串中的字符到目标字符串,并递增源指针和目标指针,最后在目标字符串末尾添加结束标志 '\0'
,完成字符串拷贝。
char *str1 = "Hello";
char *str2 = "Hello";
if (strcmp(str1, str2) == 0) {
printf("字符串相等\n");
} else {
printf("字符串不相等\n");
}
使用 strcmp
函数比较两个字符串是否相等,函数返回值为0表示字符串相等。
#include <stdio.h>
#include <string.h>
void reverseString(char* str) {
int length = strlen(str);
// 使用两个指针,一个指向字符串起始位置,一个指向字符串末尾
char* start = str;
char* end = str + length - 1;
// 交换指针所指向的字符,并向中间移动指针,直到两个指针相遇
while (start < end) {
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
char str[] = "Hello, World!";
printf("原始字符串: %s\n", str);
reverseString(str);
printf("反转后的字符串: %s\n", str);
return 0;
}
reverseString
函数接受一个指向字符串的指针,并使用两个指针 start
和 end
分别指向字符串的起始位置和末尾位置。通过交换两个指针所指向的字符,并向中间移动指针,可以实现字符串的反转操作。main
函数中,声明一个字符串 str
,并将其作为参数传递给 reverseString
函数。然后打印出反转后的字符串。关于指针作参数,详见后文:九、再论函数