通常我们用IDE写完一个程序后,点击编译按钮的时候,内部到底发生了什么?为什么会生成一个可执行文件?这个过程到底有哪些步骤呢?是很简单还是很复杂呢?这篇文章,我们把这些事情讲清楚。
首先要明确一点,编译只是一个统称,编译的整个过程有预处理、编译、汇编和链接的过程
我们给出一个特别简单的程序
//test.c
#include <stdio.h>
#define max 5
int main()
{
printf("max = %d\n", max);
return 0;
}
2024年10月11日
通常我们用IDE写完一个程序后,点击编译按钮的时候,内部到底发生了什么?为什么会生成一个可执行文件?这个过程到底有哪些步骤呢?是很简单还是很复杂呢?这篇文章,我们把这些事情讲清楚。
首先要明确一点,编译只是一个统称,编译的整个过程有预处理、编译、汇编和链接的过程
我们给出一个特别简单的程序
//test.c
#include <stdio.h>
#define max 5
int main()
{
printf("max = %d\n", max);
return 0;
}
2024年10月11日
很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C++有着很大的区别,有的同学会感觉像是看天书一样。不过,语言都是相通的,有很多共性。下面列出Objective-C语言的语法和Java,C++的对比,这样你就会很容易Objective-C的语法是怎么回事了。
先目睹一下Objective-C头文件和实现文件里都有什么:
2024年10月11日
然后我们再来看看C++中的多态,这里还要注意一点,就是在C++中是可以用多继承的,
但是java.不行,只能实现多个接口,不能继承多个类.这让c++会更加灵活一点.
可以看到,上面说了,在c++中,分为静态多态也叫函数地址早绑定,和动态多态,也叫函数地址晚绑定
2024年10月11日
事物总有优、劣两面性,不可能事事完美,所以必须权衡和取舍。
编程语言设计就是这样。
弱类型语言的编译器可以自动推断类型,不必由程序员事先声明。这样的语法机制学习简单,语言表达简单易懂,代码更优雅,开发周期更短,更加偏向逻辑设计。但是,变量混乱,运行效率低下,更容易出BUG,难以调试。
相反强类型语言,对于类型和存储的约束使得学习成本上升,开发效率比较低下,代码设计必须考虑存储问题,但是程序可靠,调试简单,变量更加规范。
所以强类型语言就要考虑相同功能的函数(按道理应该取同样的函数标识符)因为参数类型不同而要考虑标识符重用,其语言机制就是函数重载,只要参数类型不同或者参数个数不同,就可以使用相同的函数名,编译器可以按参数的不同而调用不同的版本。
2024年10月11日
一、顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
例如:a = 3,b = 5,先交换a,b的值,这个问题就好像交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为:c = a; a = b; b = c;执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b =c;则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。
2024年10月11日
上节我们分析了C++基础语法的const,static以及 this 指针,那么这节内容我们来看一下 inline 内联函数吧!
2024年10月11日
大家好,欢迎继续关注,我是发哥,今天我们来聊聊switch语法及其应用。
和上节课所讲的if else if类似,switch可以运用于更多的选择情况。其语法格式如下:
switch(条件表达式)
{
case 满足状态条件1: