金丹一层 —— 深度刨析简单问题
创始人
2024-06-03 13:53:14
0

目录

前言:

深度刨析问题


前言:

1.CSDN由于我的排版不怎么好看,我的有道云笔记比较美观,请移步有道云笔记

2.修炼必备

  1)入门必备:VS2019社区版,下载地址:Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 (microsoft.com)

  2)趁手武器:印象笔记/有道云笔记

  3)修炼秘籍:牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 (nowcoder.com)

  4)雷劫必备:leetcode 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 

  注:遇到瓶颈怎么办?百度百科_全球领先的中文百科全书 (baidu.com)

深度刨析问题

1.如何使用%c的形式打印\、'和"

#include int main()
{printf("%c\n", '\\');//打印'\'printf("%c\n",'\'' );//打印'printf("%c\n",'\"');//打印"return 0;
}

2.定义数组的[]中能不能使用变量,能不能使用const修饰的变量

#include int main()
{int num = 10;//数组的下标操作符中不能使用变量//int arr[num] = { 1,2,3 };const int data = 10;//错误,虽然const修饰的变量不能改变,但是它本质上还是一个变量,不能使用//int arr[data] = { 1,2,3,4,5 };return 0;
}

3.字符串与字符数组的区别

#include int main()
{char arr1[] = { 'a','b','c','d' };char arr2[] = "abcd";//在相同字符的情况下,字符数组的大小比字符串的占用少1字节printf("%d\n", sizeof(arr1));//4printf("%d\n", sizeof(arr2));//5//字符串有结束标志,字符数组无结束标志printf("%d\n", strlen(arr1));//随机值printf("%d\n", strlen(arr2));//4return 0;
}

4.逻辑右移和算术右移

逻辑右移:低位丢弃,高位补0

算术右移:低位丢弃,高位补符号位

//11111111 11111111 11111111 11111111 -1的补码
//01111111 11111111 11111111 11111111  逻辑右移
//11111111 11111111 11111111 11111111  算术右移

 5.sizeof算术符的内部会不会进行算术运算?求数据类型所占字节会不会出现整形提升?

1)sizeof内部是一个表达式的话,这个表达式不会进行计算的

2)sizeof内部的数据char、short会进行整型提升,占4个字节

#include int main()
{//sizeof内部是表达式的话不会进行算术运算int a = 10;printf("%d\n", a);//10printf("%d\n", sizeof(a));//4printf("%d\n", sizeof(a++));//4printf("%d\n", sizeof(++a));//4printf("%d\n", a);//10,没有进行表达式计算char c = 8;printf("%d\n", sizeof(c));//1printf("%d\n", sizeof(+c));//4printf("%d\n", sizeof(-c));//4short b = 8;printf("%d\n", sizeof(b));//2printf("%d\n", sizeof(+b));//4printf("%d\n", sizeof(-b));//4return 0;
}

 6.前置++/--和后置++/--的区别

1)前置++/--:先自增,再使用

2)后置++/--:先使用,再自增

#include int main()
{//1)前置++/--:先自增,再使用int i = 10;printf("%d\n", ++i);//11//printf("%d\n", --i);//9//2)后置++/--:先使用,再自增int a = 10;//printf("%d\n", a++);//10printf("%d\n", a--);//10return 0;
}

 7.typedef的作用

        ——对类型进行重定义,然后声明变量的可以使用这个类型

#include typedef unsigned int unit;//将unsigned int重定义为unit
int main()
{//使用重定义的类型进行声明变量unit num = 10;//等价于 unsigned int num = 10;printf("%u\n", num);//10return 0;
}

8.static的作用

        1)修饰局部变量:使局部变量的生命周期变长(只被初始化一次,被初始化后一直存在)

#include 
void test(int i)
{//static修饰局部变量static int num = 0;num = i;printf("%d\n", num);// 0 1 2 3 4 5 6 7 8 9
}int main()
{int i = 0;for (i = 0; i < 10; i++){test(i);}return 0;
}

         2)修饰全局变量:使全局变量只能在本文件内使用(全局变量具有外部链接属性)

//test.c
#include extern int age;//引用外部的全局变量
//extern int age; 当使用static修饰的age会报错int main()
{printf("%d\n", age);//10return 0;
}//add.c
#include 
int age = 10;
//static int age = 10;

        3)修饰函数:使函数只能在本文件内使用(意思同上)

#include //static修饰函数
static void test()
{printf("test~");
}int main()
{test();return 0;
}

9.指针是什么?

        ——指针就是地址,指针一般是存放变量的地址,我们一般常说的指针也叫做指针变量

#include int main()
{int num = 10;//指针是用来存放其他变量的地址的int* p = #//看看指针是否存放的是num的地址printf("%p\n", &num);printf("%p\n", p);return 0;
}

10.指针变量的大小

        ——32位平台下占4个字节,64位平台下占8个字节

#include int main()
{printf("%d\n", sizeof(char*));printf("%d\n", sizeof(short*));printf("%d\n", sizeof(int*));printf("%d\n", sizeof(long*));printf("%d\n", sizeof(long long*));printf("%d\n", sizeof(float*));printf("%d\n", sizeof(double*));return 0;
}

        32位平台:

        64位平台:

​ 

11.结构体指针访问成员属性的形式 

1)使用->访问

2)使用(*xx).属性访问

#include struct Person
{int age;char gender;
};
typedef struct Person Person;int main()
{Person person = { 18,'m' };Person* p = &person;//结构体指针访问成员属性的形式//形式1:使用->printf("%d\n", p->age);//printf("%d\n", p->gender);//形式2:(*xx).属性printf("%d\n", (*p).age);printf("%c\n", (*p).gender);return 0;
}

12.一个程序能有几个main函数?为什么

        ——一个程序只能有一个主函数(main),main函数是程序的入口,如果main函数多了程序不知道那个是入口,即报错

#include int main(){}
int main(){}

13.C语言的栈区、堆区和静态区的区别

14.const对指针的作用?

1)const 放在*的前面,则指针所指向的变量的内容不能改变,但指针的指向能改变

2)const 放在*的后面,则指针所指向的变量的内容能改变,但指针的指向不能改变

#include int main()
{int a = 10;int b = 11;const int* p1 = &a;//指向变量的内容不能改变//*p1 = 20;//能改变指向的变量p1 = &b;printf("%d\n", *p1);//11int* const p2 = &a;//指向变量的内容能改变*p2 = 12;printf("%d\n", *p2);//12//不能改变指向的变量//p2 = &a;return 0;
}

15.extern关键字的作用

        ——引用其他文件的全局变量/函数

//test.c
#include extern int age;int main()
{printf("%d\n", age);//20return 0;
}//add.c
int age = 20;

16.C语言有几种结构类型

        1)顺序结构:代码从上到下依次执行,直到结束

#include int main()
{int a = 10;int b = 20;printf("%d\n", a + b);return 0;
}

        2)分支结构:代码在执行的过程中,会选择性的执行某段代码

#include int main()
{int a = 10;int b = 9;if (a > b){printf("a > b\n");}else{printf("a < b\n");}return 0;
}

        3)循环结构:代码循环执行某段代码

#include int main()
{int i = 0;while (i < 10){printf("believe youself, you can do it!!!\n");i++;}return 0;
}

17.什么是语句?

        ——以分号结束的表达式/常量叫做语句;

#include int main()
{"abcdef";//分号结束int num = 10;//分号结束return 0;
}

18.多分支的执行规则

        ——某个分支的条件成立后,执行该分支,其他分支不再执行

#include int main()
{int score = 0;scanf("%d", &score);if (score > 0 && score < 60){printf("成绩不合格\n");}else if (score >= 60 && score < 70){printf("成绩一般\n");}else if (score >= 70 && score < 80){printf("成绩良好\n");}else if (score >= 80 && score < 90){printf("成绩优良\n");}else if (score >= 90 && score <= 100){printf("成绩优秀\n");}else{printf("你输入的成绩有误,请重写输入~\n");}return 0;
}

19.switch()中表达式和case:后面的值的特点

1)switch中的表达式只能是整型表达式(char、short、int、long、long long)

2)case后面跟的值:只能是整型常量值

20.break/continue能不能在switch中使用,作用是什么

1)break能在switch中使用,使用后跳出switch语句,执行switch后的语句

2)continue不能再switch中使用

#include int main()
{int weekday = 0;scanf("%d", &weekday);double data = 4;//switch(data){}()中只能为整型表达式switch (weekday){//case 1.0://错误,case的后面只能跟整型常量值且整型常量值不能重复case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 7:printf("星期日\n");break;default:printf("你输入的数字有误,请重新操作\n");break;//好习惯}return 0;
}

21.break和continue在循环中的作用

1)break执行后跳出循环,执行循环后面的语句

2)continue执行后,跳过本次循环(即跳过continue后的语句),执行下一次循环

#include int main()
{int i = 0;while (i < 10){if (i == 5){break;}printf("%d ", i);//0 1 2 3 4i++;}i = 0;while (i < 10){if (i == 5){continue;}printf("%d ", i);//0 1 2 3 4 死循环i++;}return 0;
}

22.C语言有那些数据类型?

1)整型家族:char、short、int、long、long long

2)浮点型家族:float、double

3)构造类型:结构体、联合类型(union)、枚举类型(enum)、数组

4)指针类型

5)void型(常用于在形参和函数的返回类型)

#include //空类型
void test(void){}int main()
{//整型家族char a;short b;int c;long d;long long e;//浮点型家族float f;double g;//构造类型//struct{};//里面需要填构造中的参数//union{};int arr[10];enum{};//指针类型int* p1;char* p2;float* p3;return 0;
}

 23.画图详解char的范围

24. 什么是大端字节序和小端字节序?

1)小端字节序:数据的低字节存储在内存中的低地址处,高字节存储在内存中的高地址处

2)大端字节序:数据的低字节存储在内存中的高地址处,高字节存储在内存中的低地址处

​ 25.如何判断一台机器是大端字节序还是小端字节序?

        ——看该机器的低字节数据存储在内存中的低地址处还是高地址处

#include int check_sys(int a)
{//返回低地址的第一个字节的数据值return (*(char*)&a);
}int main()
{int a = 1;int ret = check_sys(a);//返回比较if (ret == 1){printf("小端\n");}else{printf("大端\n");}return 0;
}

26.整形提升是对什么数据类型进行提升?

        ——整型提升只能使用于char和short类型,把char和short转化为int后进行计算

#include int main()
{char ch1 = 127;//01111111char ch2 = 3;//00000011char ch3 = ch1 + ch2;//01111111  --> 127//00000011  --> 3//10000010 --> 补码//11111111 11111111 11111111 10000010 整型提升//10000010  截断//10000001 //11111110 -126 结果printf("%d %d\n", ch3, ch1 + ch2);//-126 130return 0;
}

27.VS的调试技巧

1)F10 ---> 逐过程(跳过函数)

2)F9 ---> 打断点和取消断点(配合F5使用)

3)F11 ---> 逐语句(一句一句的调试)

4)F5 ---> 开始调试(配合F9使用)

28.异或运算符的性质

1)相同数异或为0

2)任何一个数与0异或是这个数本身

3)a ^ 0 = 0; a ^ b ^ b = a; b ^ b = 0;

#include int main()
{int a = 10;int b = 10;int c = 0;int d = 5;int ret = a ^ c;int res = a ^ b ^ d;printf("%d\n", ret);//10printf("%d\n", res);//5return 0;
}

29.如何判断一个数是不是偶数?

法一:取模运算:判断这个数的余数是不是不为1

法二:按位与运算:判断这个数&1的结果是不是0

#include int main()
{int num = 0;scanf("%d", &num);if (num & 1){printf("%d是奇数\n", num);}else{printf("%d是偶数\n", num);}return 0;
}
#include int is_judge_even(int num)
{return num % 2;
}int main()
{int num = 0;scanf("%d", &num);if (is_judge_even(num)){printf("%d是奇数\n", num);}else{printf("%d是偶数\n", num);}return 0;
}

30.函数的格式

返回类型 函数名(形参列表……) {}

#include void test()
{printf("test...\n");
}int main()
{test();return 0;
}

相关内容

热门资讯

常用商务英语口语   商务英语是以适应职场生活的语言要求为目的,内容涉及到商务活动的方方面面。下面是小编收集的常用商务...
六年级上册英语第一单元练习题   一、根据要求写单词。  1.dry(反义词)__________________  2.writ...
复活节英文怎么说 复活节英文怎么说?复活节的英语翻译是什么?复活节:Easter;"Easter,anniversar...
2008年北京奥运会主题曲 2008年北京奥运会(第29届夏季奥林匹克运动会),2008年8月8日到2008年8月24日在中华人...
英语道歉信 英语道歉信15篇  在日常生活中,道歉信的使用频率越来越高,通过道歉信,我们可以更好地解释事情发生的...
六年级英语专题训练(连词成句... 六年级英语专题训练(连词成句30题)  1. have,playhouse,many,I,toy,i...
上班迟到情况说明英语   每个人都或多或少的迟到过那么几次,因为各种原因,可能生病,可能因为交通堵车,可能是因为天气冷,有...
小学英语教学论文 小学英语教学论文范文  引导语:英语教育一直都是每个家长所器重的,那么有关小学英语教学论文要怎么写呢...
英语口语学习必看的方法技巧 英语口语学习必看的方法技巧如何才能说流利的英语? 说外语时,我们主要应做到四件事:理解、回答、提问、...
四级英语作文选:Birth ... 四级英语作文范文选:Birth controlSince the Chinese Governmen...
金融专业英语面试自我介绍 金融专业英语面试自我介绍3篇  金融专业的学生面试时,面试官要求用英语做自我介绍该怎么说。下面是小编...
我的李老师走了四年级英语日记... 我的李老师走了四年级英语日记带翻译  我上了五个学期的小学却换了六任老师,李老师是带我们班最长的语文...
小学三年级英语日记带翻译捡玉... 小学三年级英语日记带翻译捡玉米  今天,我和妈妈去外婆家,外婆家有刚剥的`玉米棒上带有玉米籽,好大的...
七年级英语优秀教学设计 七年级英语优秀教学设计  作为一位兢兢业业的人民教师,常常要写一份优秀的教学设计,教学设计是把教学原...
我的英语老师作文 我的英语老师作文(通用21篇)  在日常生活或是工作学习中,大家都有写作文的经历,对作文很是熟悉吧,...
英语老师教学经验总结 英语老师教学经验总结(通用19篇)  总结是指社会团体、企业单位和个人对某一阶段的学习、工作或其完成...
初一英语暑假作业答案 初一英语暑假作业答案  英语练习一(基础训练)第一题1.D2.H3.E4.F5.I6.A7.J8.C...
大学生的英语演讲稿 大学生的英语演讲稿范文(精选10篇)  使用正确的写作思路书写演讲稿会更加事半功倍。在现实社会中,越...
VOA美国之音英语学习网址 VOA美国之音英语学习推荐网址 美国之音网站已经成为语言学习最重要的资源站点,在互联网上还有若干网站...
商务英语期末试卷 Part I Term Translation (20%)Section A: Translate ...