摘要:本篇主要是C语言面试技巧--C语言数组笔试题解析,希望对大家C语言开发的学习以及面试有一定的帮助。
本篇主要是C语言面试技巧--C语言数组笔试题解析,希望对大家C语言开发的学习以及面试有一定的帮助。
C语言数组笔试题解析
数组名:
sizeof(数组名):数组名表示整个数组,计算的是整个数组的大小
&数组名:数组名表示的是整个数组,取出的是整个数组的地址
除此之外,所有的数组名都是数组首元素的地址
一维数组
int main()
{
int a[] = { 1,2,3,4 };
printf("%d\n", sizeof(a));//16 数组名a单独放在sizeof内部,数组名表示的是整个数组,计算的是整个数组的大小
printf("%d\n", sizeof(a + 0));//4/8 a表示首元素的地址,a+0还是首元素的地址
printf("%d\n", sizeof(*a));//4 a表示首元素的地址,*a就是首元素==》 a[0]
//*a <==> *(a+0) <==> a[0]
printf("%d\n", sizeof(a + 1));//4/8 a表示首元素的地址,a+1是第二个元素的地址
printf("%d\n", sizeof(a[1]));//4 就是第二个元素
printf("%d\n", sizeof(&a));//4/8 &a - 数组的地址
printf("%d\n", sizeof(*&a));//16 &a是数组的地址,对数组的地址解引用拿到的是数组
printf("%d\n", sizeof(&a + 1));//4/8 &a是数组的地址,&a+1是数组地址+1,跳过整个数组,还是地址
printf("%d\n", sizeof(&a[0]));//4/8
printf("%d\n", sizeof(&a[0] + 1));//4/8
return 0;
}
字符数组
int main()
{
char arr[] = { 'a','b','c','d','e','f' };
printf("%d\n", sizeof(arr));//6
printf("%d\n", sizeof(arr + 0));//4/8
printf("%d\n", sizeof(*arr));//1
printf("%d\n", sizeof(arr[1]));//1
printf("%d\n", sizeof(&arr));//4/8
printf("%d\n", sizeof(&arr + 1));//4/8
printf("%d\n", sizeof(&arr[0] + 1));//4/8
return 0;
}
strlen - 库函数
求字符串长度
sizeof - 操作符 - 单位是字节
求变量所占空间的大小
求类型创建的变量所占空间的大小
int main()
{
char arr[] = { 'a','b','c','d','e','f' };
printf("%d\n", strlen(arr));//随机值
printf("%d\n", strlen(arr + 0));//随机值
printf("%d\n", strlen(*arr));//*arr - 'a' - 97
//strlen以为传进来的'a'的ascii码值就是地址
printf("%d\n", strlen(arr[1]));//'b' - 98 -err
printf("%d\n", strlen(&arr));//随机值
printf("%d\n", strlen(&arr + 1));//随机值
printf("%d\n", strlen(&arr[0] + 1));//随机值
return 0;
}
int main()
{
char arr[] = "abcdef";//{a b c d e f \0}//7
printf("%d\n", sizeof(arr));//7字节
printf("%d\n", sizeof(arr + 0));//4/8 首元素地址
printf("%d\n", sizeof(*arr));//1 arr是首元素地址,*arr就是首元素
printf("%d\n", sizeof(arr[1]));//1 第二个元素
printf("%d\n", sizeof(&arr));//4/8 数组的地址,数组的地址也是地址
printf("%d\n", sizeof(&arr + 1));//4/8 &a是数组的地址,&a+1是数组地址+1,跳过整个数组,还是地址
printf("%d\n", sizeof(&arr[0] + 1));//4/8 第二个元素的地址
return 0;
}
int main()
{
char arr[] = "abcdef";//{a b c d e f \0}//7
printf("%d\n", strlen(arr));//6
printf("%d\n", strlen(arr + 0));//6
printf("%d\n", strlen(*arr));//err
printf("%d\n", strlen(arr[1]));//err
printf("%d\n", strlen(&arr));//6
printf("%d\n", strlen(&arr + 1));//随机值
printf("%d\n", strlen(&arr[0] + 1));//5
return 0;
}
int main()
{
const char* p = "abcdef";
printf("%d\n", sizeof(p));//4/8 p是一个指针变量
printf("%d\n", sizeof(p + 1));//4/8 p+1是字符b的地址
printf("%d\n", sizeof(*p));//1
printf("%d\n", sizeof(p[0]));//1 p[0]-->*(p+0)
printf("%d\n", sizeof(&p));//4/8
printf("%d\n", sizeof(&p + 1));//4/8
printf("%d\n", sizeof(&p[0] + 1));//4/8
return 0;
}
int main()
{
const char* p = "abcdef";
printf("%d\n", strlen(p));//6
printf("%d\n", strlen(p + 1));//5
printf("%d\n", strlen(*p));//err
printf("%d\n", strlen(p[0]));//err p[0]-->*(p+0)
printf("%d\n", strlen(&p));//随机值
printf("%d\n", strlen(&p + 1));//随机值
printf("%d\n", strlen(&p[0] + 1));//5
return 0;
}
二维数组
int main()
{
int a[3][4] = { 0 };
printf("%d\n", sizeof(a));//48
printf("%d\n", sizeof(a[0][0]));//4
printf("%d\n", sizeof(a[0]));//16 a[0]是第一行的数组名,数组名单独放在sizeof内部
printf("%d\n", sizeof(a[0] + 1));//4/8
//a[0]是第一行的数组的数组名,并没有单独放在sizeof内部,也没有&,所以a[0]表示首元素的地址,就是这一行这个数组第一个元素的地址
//所以a[0] + 1就是这一行,第二个元素的地址
printf("%d\n", sizeof(*(a[0] + 1)));//4 *(a[0] + 1)就是第一行第二个元素
printf("%d\n", sizeof(a + 1));//4/8 数组名a并没有单独放在sizeof内部,也没有&,所以a表示首元素(第一行)的地址
//所以a+1,就是第二行的地址
printf("%d\n", sizeof(*(a + 1)));//16 *(a+1)就是第二行
printf("%d\n", sizeof(&a[0] + 1));//4/8 第二行地址
printf("%d\n", sizeof(*(&a[0] + 1)));//16 第二行 - a[1]
printf("%d\n", sizeof(*a));//16
//a表示首元素(第一行)的地址
//*a - 第一行 - 第一行的数组名
//*a -> *(a+0) -> a[0]
printf("%d\n", sizeof(a[3]));//16
return 0;
}
我是小职,记得找我
✅ 解锁高薪工作
✅ 免费获取基础课程·答疑解惑·职业测评
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号