刨析《C语言》【进阶】付费知识【完结,2024年最新大佬分享开发经验的文案

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

strcpy(str, “hello”);

free(str);

if(str != NULL)

{

strcpy(str, “world”);

printf(str);

}

}//内存访问错误,因为free了,虽没有消失,但找不到内存地址了,没有访问权限;还是会进入if,因为没有手动置空




以上例题来源于《高质量的C/C++编程》



### []( )realloc



增容函数:把原先那块内存的内容复制到新块上,因此,不能再使用指向旧内存的指针,而是使用realloc所返回的新指针



### []( )return



在函数return 只能返回堆上的内存 比如malloc申请的堆内存,而`char p[]="hello world"; return p;//err`  

例:



int *p(void)

{

int x= 10;

return (&x);

}




[]( )数据的存储

=================================================================



### []( )大端和小端



![请添加图片描述](https://img-blog.csdnimg.cn/72e8c490b44543a59dc6e9c97e9a5129.png)



### []( )整形提升



#include<stdio.h>

int main()

{

//unsigned char 0-255



unsigned char a =200;

//00000000000000000000000011001000	-char类型占一个字节就是8位

//11001000

unsigned char b =100;

//00000000000000000000000001100100

//01100100



unsigned char c=0 ;

//a和b整形提示

//00000000000000000000000011001000

//00000000000000000000000001100100

//00000000000000000000000100101100



c = a + b;//整形先提升再相加  会截断

//00101100

//00000000000000000000000000101100

//

printf("%d %d ",a+b, c);

//			300			44



return 0;

}




[]( )文件

==============================================================



\*\*#include<文件名>\*\*到系统提供的指定路径下,找文件,如果找不到,就报错  

\*\*#include"文件名"\*\*先到当前路径找下文件,找不到就执行#include<文件名>的过程,如果还找不到,就报错  

如果找到文件后,就将文件的内容复制粘贴带#include预处理指令出现的位置



系统指定路径在:



gcc -E test.c -o test.i -v




#include “…” 搜索从这里开始:  

#include <…> 搜索从这里开始:



> /usr/lib/gcc/x86\_64-redhat-linux/4.8.5/include  

> /usr/local/include  

> /usr/include



搜索列表结束。  

蓝色部分就是系统指定路径,可cd /usr/include查看



### []( )标准错误



0:标准输入  

1:标准输出  

2:标准错误输出  

“>”表示重定向,&2表示标准错误输出的通道,所以1>2&表示标准输出重定向到标准错误输出通道;  

而1>2表示标准输出重定向到文件名为2的文件中。



### []( )编译文件过程



1.预处理:对源文件进行预处理生成预处理文件,预处理CPP根据预处理指令(如#include,#define等)所包含的文件内容插入程序中



gcc -E test.c -o test.i//可查看编译过程,用vim test.i 。最后面有详细过程

printf(“ARE=%.2f\n”,ARE(3+2));==> printf(“ARE=%.2f\n”,3.14 (3+2)(3+2));




2.编译:根据预处理文件,编译为汇编语言,调用汇编程序生成汇编代码(.s文件)



gcc -S test.s -o test.o




3.汇编:调用汇编程序,翻译成机器语言,生成目标文件(.o文件)



gcc -c test.s -o test.o




4.链接:将test.o和运行时文件,库函数进行链接,调用连接器,将程序中用到的函数加到程序中,生成可执行文件



gcc test.o -o test




[]( )预编译

===============================================================



注释一般用#if 0…else …#endif 用来保存到预处理文件中



**预编译又叫预处理**。预编译不是编译,而是编译前的处理。这个操作是在正式编译之前由系统自动完成的\*\*。预编译又叫预处理。预编译不是编译,而是编译前的处理。这个操作是在正式编译之前由系统自动完成的。



#define 定义一个预处理宏  

#undef 取消宏的定义  

#if 编译预处理中的条件命令,相当于C语法中的if语句  

#ifdef 判断某个宏是否被定义,若已定义,执行随后的语句  

#ifndef 与#ifdef相反,判断某个宏是否未被定义  

#elif 若#if, #ifdef, #ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语法中的else-if  

#else #if, #ifdef, #ifndef对应, 若这些条件不满足,则执行#else之后的语句,相当于C语法中的else  

#endif #if, #ifdef, #ifndef这些条件命令的结束标志.  

defined  与#if, #elif配合使用,判断某个宏是否被定义



### []( )define与typedef的取别



> 你应该使用typedef而不是#define来创建新的类型,因为后者无法正确地处理指针类型



#define pro_char char *

pro_char a,b;

//正确声明了a,但是b却被声明了一个字符




[]( )针对无具体类型的操作

======================================================================



无具体类型不能对它解引用



![请添加图片描述](https://img-blog.csdnimg.cn/bd459d5c9bee4c33ad76d372b104c4e7.png)



[]( )内存

==============================================================



![请添加图片描述](https://img-blog.csdnimg.cn/311137ef648d48c08eccf03f8b11d6f7.png)



### []( )变量的生命周期



变量的生命周期就是从变量地址空间的分配到变量地址空间的释放  

程序是静态存储在磁盘上的文件,程序是指令的集合,程序不运行,就谈不上变量地址空间的分配。  

程序运行过程对计算机资源的使用的描述就是进程。同一个进程每一次运行就是一个进程。当我们在命令行键入./ 可执行文件的时候,程序就开始运行了。  

程序的运行分为两个阶段,分别是**加载和执行**。程序首先被加载到具体的地址空间,比如全局变量、静态局部变量和函数…,我们将其称为程序的符号。程序符号的具体地址,在加载阶段就已经分配好了。我们称这样的存储区为**静态存储区。**  

程序加载完毕,找到main函数,然后开始执行程序,在程序执行阶段,遇到定义自动局部变量的语句的时候,系统自动为这些自动局部变量分配空间,局部变量才诞生了。这些局部变量所在的区域称为\*\*动态存储区。\*\*这些变量的地址是系统自动分配的,当所在函数的复合语句结束的时候,自动释放其地址空间。所以称为静态分配。还有一种,在程序执行的过程中,程序需要的地址空间的大小不确定,需要程序员根据实际情况,向系统提出申请,这样的分配的地址空间称为动态分配。  

程序执行的时候,需要将可执行程序加载到内存中,CPU从内存中读取程序的指令



数据类型:首先由变量的名字找到变量的地址,然后根据变量的类型访问地址空间里的内容



### []( )static



修饰局部变量:局部变量的生命周期变长  

修饰全局变量:改变了变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就没法再使用了。  

修饰函数:改变了函数的链接属性  

外部链接属性->内部链接属性



#include<stdio.h>

void cout(void){

int i =0;

printf("cout i++=%d\n",i++);

return ;

}

//静态变量在编译值赋一次初值,而自动变量赋初值是在函数调用时,每调用一次就要重新赋初值

void cout_c(void){

static int i =0;//静态局部变量 

printf("cout i++=%d\n",i++);

return ;

}

int main()

{

int i;

for(i=0;i<5;i++)

cout(); 

for(i=0;i<5;i++)

cout_c();

return 0;

}

/*

运行结果:

cout i++=0

cout i++=0

cout i++=0

cout i++=0

cout i++=0

cout i++=0

cout i++=1

最后

中年危机是真实存在的,即便有技术傍身,还是难免对自己的生存能力产生质疑和焦虑,这些年职业发展,一直在寻求消除焦虑的依靠。

  • 技术要深入到什么程度?

  • 做久了技术总要转型管理?

  • 我能做什么,我想做什么?

  • 一技之长,就是深耕你的专业技能,你的专业技术。(重点)

  • 独立做事,当你的一技之长达到一定深度的时候,需要开始思考如何独立做事。(创业)

  • 拥有事业,选择一份使命,带领团队实现它。(创业)

一技之长分五个层次

  • 栈内技术 - 是指你的前端专业领域技术

  • 栈外技术 - 是指栈内技术的上下游,领域外的相关专业知识

  • 工程经验 - 是建设专业技术体系的“解决方案”

  • 带人做事 - 是对团队协作能力的要求

  • 业界发声 - 工作经验总结对外分享,与他人交流

永远不要放弃一技之长,它值得你长期信仰持有

主要内容包括html,css,html5,css3,JavaScript,正则表达式,函数,BOM,DOM,jQuery,AJAX,vue 等等。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
方案”

  • 带人做事 - 是对团队协作能力的要求

  • 业界发声 - 工作经验总结对外分享,与他人交流

永远不要放弃一技之长,它值得你长期信仰持有

主要内容包括html,css,html5,css3,JavaScript,正则表达式,函数,BOM,DOM,jQuery,AJAX,vue 等等。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-WQDHV5Fb-1713237175504)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值