C语言面试技巧--C语言数组笔试题解析
小职 2021-11-04 来源 : 阅读 568 评论 0

摘要:本篇主要是C语言面试技巧--C语言数组笔试题解析,希望对大家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;

}


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取基础课程·答疑解惑·职业测评

C语言面试技巧--C语言数组笔试题解析

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    ICP许可  沪B2-20190160

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程