#include<stdio.h>
int Sort(char arr[])
{
int sz = sizeof(arr);
printf("%d\n", sz);
return 0;
}
int main()
{
int i;
char* p;
char ch5[] = "lxd";
char ch6[] = { 'l','x','d' };
//打印到“\0”才会停止打印
printf("%s\n", ch5);
printf("%s\n", ch6);
//计算“\0”之前的字符个数
printf("%d\n", strlen(ch5));
printf("%d\n", strlen(ch6));
//"%p"用于打印地址(16进制)
for (i = 0; i < 3; i++)
{
printf("%p\n", &ch5[i]);
}
/*
* 数组名是数组首元素地址,但是有两个例外:
* 1.sizeof(数组名),数组名表示整个数组,计算的是整个数组的大小,单位是字节
* 2.&数组名,数组名表示整个数组,取出的是整个数组的地址
*/
p = ch5;
for (i = 0; i < 3; i++)
{
printf("%c\n",*p);
p++;
}
int sz = sizeof(ch5);
printf("%d\n", sz);
printf("%d\n", sizeof(ch5[0]));
Sort(ch5);//数组传参时,传递的其实是首元素地址,形参无法在函数内部计算元素个数
printf("请输入:\n");
scanf("%c", &ch5[1]);
getchar();//输入字符串字后需要用getchar()或fflush(stdin)清空缓冲区里的'\n'才可继续输入
//但是我在VS2022中使用fflush(stdin)后输入字符失败
scanf("%c", ch5);
printf("%c\n", ch5[0]);
printf("%c\n", ch5[1]);
printf("%p\n", ch5);//表示数组首元素的地址
printf("%p\n", &ch5[0]);//表示数组首元素的地址
printf("%p\n", &ch5);//表示数组的地址
return 0;
}
07-05
5617
12-02
6475
01-17
8196
11-11