字符串与字符数组

#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;
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值