#include<stdio.h>#include<string.h>voidreverse(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--;}}intmain(){printf("****** 字符串 ******\n");char arr[]="abcdef";// 字符串在内存中最后一定是以'\0'结尾的。printf("%d\n",sizeof(arr));//7 全部数组元素所占的字节数 a b c d e f \0printf("%d\n",sizeof(arr[0]));//1 单个char占一个字节printf("%d\n",sizeof(arr)/sizeof(arr[0]));//7printf("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]));//6return0;}