金丹一层 —— 深度刨析简单问题
创始人
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;
}

相关内容

热门资讯

蜜蜂采蜜的诗句 有关蜜蜂采蜜的诗句  诗句就是组成诗词的`句子。诗句通常按照诗文的格式体例,限定每句字数的多少。下面...
郁达夫 故都的秋赏析 郁达夫 故都的秋赏析郁达夫(1896年12月7日—1945年9月17日),浙江富阳人,中国现代著名小...
赏心悦目的中秋节藏头诗大全   欢度中秋  五州宾朋同欢庆,  湖波秋色几度平,  四世共赏心中月,  海内知己恋秋情。  中秋...
描写鸟的诗句古诗 描写鸟的诗句古诗  小河的流水声,像拨动了的琴弦,流下潺潺的'流水声,树上的小鸟在树上跳来跳去,用清...
襄邑道中经典古诗阅读答案 襄邑道中经典古诗阅读答案  【原文】  襄邑道中  陈与义  飞花两岸照船红,百里榆堤半日风。  卧...
李白《秋浦歌》译文及赏析 李白《秋浦歌》译文及赏析  《秋浦歌十七首》是唐代伟大诗人李白的组诗作品。这组诗创作于唐玄宗天宝年间...
目送征鸿飞杳杳,思随流水去茫... “目送征鸿飞杳杳,思随流水去茫茫。”出处 出自 五代 孙光宪 的《浣溪沙·蓼岸风多橘柚香》“目送征鸿...
庄周梦蝶古诗 庄周梦蝶古诗  每日每夜,我依靠着忙碌的步履,在桌台上敲击着零散的字母,也许我是想建筑一座宏伟的堡垒...
白居易描写春天的诗句 白居易描写春天的诗句  在生活、工作和学习中,大家肯定对各类诗句都很熟悉吧,诗句节奏上鲜明有序,音谐...
《感遇》张九龄全文 《感遇十二首》张九龄全文  《感遇十二首》这组诗托物寓意,抒发了作者的身世感慨,表现了作者的理想操守...
藕花珠缀,犹似汗凝妆 “藕花珠缀,犹似汗凝妆。”出处 出自 五代 阎选 的《临江仙·雨停荷芰逗浓香》“藕花珠缀,犹似汗凝妆...
观沧海赏析200字   观沧海  东临碣石,以观沧海。  水何澹澹,山岛竦峙。  树木丛生,百草丰茂。  秋风萧瑟,洪波...
三行情诗 三行情诗汇编  情诗,抒发男女间爱情的诗,尤指男人对女人的诗,是诗的一种,是爱情表达的一种形式。简单...
爱情的古诗词 有关爱情的古诗词25首  导语:荷叶生时春恨生,荷叶枯时秋恨成。深知身在情长在,怅望江头江水声。下面...
《饮湖上初晴后雨》古诗意思 《饮湖上初晴后雨》古诗意思  在诗作《饮湖上初晴后雨》中,体现诗人苏轼对于西湖的喜爱之情。饮湖上初晴...
写桃花的诗句有哪些 写桃花的诗句有哪些  桃花是非常美丽的植物,下面就是小编为您收集整理的'写桃花的诗句有哪些的相关文章...
表达思乡情的诗句 表达思乡情的诗句  1、离愁渐远渐无穷,迢迢不断如春水。——欧阳修  2、谁家玉笛暗飞声,散入春风满...
元稹《离思·其四》 元稹《离思五首·其四》  元稹的《离思五首·其四》最突出的特色,就是采用巧比曲喻的手法,淋漓尽致地表...
描写时间的诗句 描写时间的诗句  1、少壮不努力,老大徒伤悲。  2、一日无二晨,时间不重临。  3、为君聊赋今日诗...
《成都府》杜甫 《成都府》杜甫  成都府  杜甫  翳翳桑榆日,照我征衣裳。  我行山川异,忽在天一方。  但逢新人...