char
数组是一种用于存储字符序列的数据结构。指针是一种变量,它存储了另一个变量的内存地址。在 C/C++ 中,char
数组和指针经常一起使用,用于处理字符串。
char
数组和指针进行字符串的读取、拼接、分割等操作。malloc
和 free
函数动态分配和释放内存。原因:访问了数组边界之外的内存地址。
解决方法:
char arr[] = "Hello";
char *ptr = arr;
for (int i = 0; i < 6; i++) {
printf("%c", *(ptr + i));
}
确保循环条件正确,避免越界。
原因:指针未初始化或被置为 NULL
,但仍然被解引用。
解决方法:
char *ptr = NULL;
if (ptr != NULL) {
printf("%c", *ptr);
}
在使用指针前检查其是否为 NULL
。
原因:动态分配的内存未被释放。
解决方法:
char *ptr = (char *)malloc(100 * sizeof(char));
// 使用 ptr
free(ptr);
确保每次动态分配的内存都被释放。
#include <stdio.h>
#include <stdlib.h>
int main() {
char arr[] = "Hello";
char *ptr = arr;
// 打印字符串
for (int i = 0; i < 5; i++) {
printf("%c", *(ptr + i));
}
printf("\n");
// 动态分配内存
char *dynamic_ptr = (char *)malloc(100 * sizeof(char));
if (dynamic_ptr == NULL) {
printf("Memory allocation failed\n");
return 1;
}
strcpy(dynamic_ptr, "World");
printf("%s\n", dynamic_ptr);
// 释放内存
free(dynamic_ptr);
return 0;
}
通过以上内容,希望你能更好地理解 char
数组和指针的相关概念及其应用。
领取专属 10元无门槛券
手把手带您无忧上云