#include"stdio.h"
#include"string.h"
int main()
{
void length(char*);//自定义函数
char arr1[] = "abc";//这是怎么存放的呢?
char arr2[] = { 'a','b','c','d','/x23','0','\0'};
/printf("%s/n", arr1);/
/printf("%s/n", arr1);/
printf("%d\n", sizeof (arr1));
printf("%d\n", strlen(arr1));//strlen计算字符长度是不包括\0
printf("%p\n",arr1);//%d表示的是数字,%f表示的是小数,%s表示的是字符串
printf("%c\n", *arr1);
return 0;}
问题为“abc”和 { 'a','b','c','d','/x23','0','\0'}的区别?
4
3
012FFED0
a
不明白为什么“abc”的长度是怎么算的,如果是字符串是不是需要考虑“”呢?
字符常量在数组里是如何储存的?
char arr1[] = "abc"; arrd={'a','b','c','\0'}
char arr2[] = { 'a','b','c','d','/x23','0','\0'}; arr2="abcd#0"
char arr1[] = "abc";数组相当于放了四个字符,就是'a','b','c','\0'
char arr2[] = { 'a','b','c','d','/x23','0','\0'}; 也是个字符串,最后的'\0'是字符串结束符,有效字符是前面6个
sizeof()计算的是数组的大小,strlen()计算的是数组的长度。在一般情况下数组末尾是自带一个\0占位的,但strlen()默认是遇到\0就停下并不把\0计算在内。
所以abc的长度用strlen()计算是3,不考虑\0。
字符常量用赋值法存储在数组中要看该数组是char型还是int型,但通常是没太大区别的。