#include <stdio.h>
#include <string.h>
void reverse(char arr[]) {
//参数接受的数组本质是指针,
//X86计算机(32位)指针大小为32/8=4字节
//X64计算机(64位)指针大小为64/8=8字节
printf("sizeof(arr):%d\n",sizeof(arr)); //4或者8,取决于计算机cpu
//元素是char类型,大小为1个字节
printf("sizeof(arr[0]):%d\n",sizeof(arr[0]));
//所以按以下的方式来获取函数接收的数组的大小是错误的
printf("错误的获取arr数组大小:%d\n",sizeof(arr)/sizeof(arr[0]));
int left = 0;
//正确的获取函数接收的数组的大小
int right = strlen(arr) - 1;
char temp;
while(left < right) {
temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
int main() {
printf("****** 字符串 ******\n");
char arr[] = "abcdef"; // 字符串在内存中最后一定是以'\0'结尾的。
printf("%d\n", sizeof(arr)); //7 全部数组元素所占的字节数 a b c d e f \0
printf("%d\n", sizeof(arr[0]));//1 单个char占一个字节
printf("%d\n", sizeof(arr) / sizeof(arr[0])); //7
printf("strlen(arr):%d\n", strlen(arr)); //6 strlen函数计算"\0"之前的字符个数
printf("****** 字符串倒序 *******\n");
reverse(arr);
printf("%s\n",arr);
printf("****** 字符数组 ******\n");
char arr2[] = { 'a','b','c','d','e','f' };
printf("%d\n", sizeof(arr2)); //6 全部数组元素所占的字节数 a b c d e f
printf("%d\n", sizeof(arr2[0]));//1 单个char占一个字节
printf("%d\n", sizeof(arr2) / sizeof(arr2[0]));//6
return 0;
}
字符串与字符数组
于 2023-04-24 14:53:21 首次发布