C语言基础2:编译到运行+条件编译+跨文件调用+括号表达式

c语言从编译到运行

在这里插入图片描述
装 入 的 三 种 方 式 ( 逻 辑 地 址 到 物 理 地 址 的 转 换 ) : 1. 绝 对 装 入 2. 静 态 重 定 位 3. 动 态 重 定 位 装入的三种方式(逻辑地址到物理地址的转换):\\ 1.绝对装入\\2.静态重定位\\3.动态重定位 ()1.2.3.

项目ValueValue
绝对装入编译时产生绝对地址单道程序,在一个计算机系统中一次只能支持 一个用户程序的运行
静态重定位装入时确定物理地址早期批处理操作系统
动态重定位运行时确定物理地址现代操作系统

条件编译

#if 0 … #endif 属于条件编译,0 即为参数。

#if condition
code1
#else
code2
#endif

这种形式对程序调试也可以帮助,测试时使用 #if 1 来执行测试代码,发布后使用 #if 0 来屏蔽测试代码。

c 调用另一个文件的函数

单片机控制文件的分层:
在这里插入图片描述

新建.h文件:

在这里插入图片描述
在这里插入图片描述

/*源文件.cpp*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define maxsize 100
#include"排序.h"/*不是库函数使用双引号包含*/
 int main()
 {
   test();
 }
/*排序.h:if写法有点像MATLAB*/
#ifndef  SORT/*如果标号没有被定义*/
#define SORT
void test();
#endif
void test();/*直接这样写也行,不过其他文件再调用时系统会进行重新定义*/
/*排序.cpp*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include"排序.h"/*不是库函数使用双引号包含*/

void test()
{
	printf("在.h文件中声明的函数");
}

括号表达式

printf("%d",(1,2,3,100));

在这里插入图片描述

位移

System.out.println(2<<3);//java语言
输出为16
二进制2=10
10向左移动三位是10 000

共用体union:共享同一段内存的结构体

下例表示声明一个共用体uni:

union uni{/*“共用”类型“FOO”*/ 
    int a;    
    char b; 
    double c; 
};

C++中的.和::和:和->的区别

可以看出 & 和 && 在判断语句中都可以实现“和”这个功能

VS2010常见的报错处理

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

表达式必须包含类类型:

将.换成->(*G.)

error C2039,报错;不是类成员

− 关闭VS,重新打开…

无法打开文件“C:…\xxxx.exe”

错误原因:项目在在打开前已经打开了win32里面的程序,并且运行。 解决方法:关闭直接在win32中运行的程序,再点击调试

vs2019无法打开源文件"iostream"

可参考知乎回答,如果其他的文件能正常引入的话,可以选择粘贴源文件到新建项目

参考:
https://www.cnblogs.com/xian-yongchao/p/9506176.html
https://www.zhihu.com/question/329248057
https://www.runoob.com/cplusplus/cpp-comments.html

动态内存分配:

项目Value
int square(int num){int sq = num* num;return sq; }子程序参数num和局部变量sq在栈区
int a= 0;全局变量a在全局初始化区
char *p1;全局变量p1在全局未初始化区
main({int num=20; char *p2,*p3 = “123456”;局部变量num, p2, p3在栈区,字符串常量12345610在常量区
int a[]= {1,2,3};数组a(存储了3个整数)在栈区
static int c =0;c在全局(静态)初始化区
p1 = (char *)malloc(10); p2 = (char *)malloc(20);分配得到的10和20字节的区域就在堆区
strcpy(p1, “123456”);123456\0放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方
printf('square = %d",square(num));系统中存储在堆区的量不会由系统自动释放
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值