C基础+备忘
weixin_39087379
这个作者很懒,什么都没留下…
展开
-
int *p(int); 和int (*p)(int)
int *p(int);p(int) 说明p为函数,返回值为 int类型的指针 (指向int的指针)。int (*p)(int);(*p)说明 p 为指针,(*p)() 说明该指针指向函数, 函数的返回值为int原创 2021-02-21 01:59:35 · 493 阅读 · 0 评论 -
对数组名不要取地址,对数组名不要进行++操作
1、对数组名不要取地址2、数组名代表数组的地址,也代表第一个元素的地址,但是不能对此地址进行++操作,如需使用指针访问,需重新定义一个指针,使其指向该数组,然后通过*(p++)依次访问数组中的值。 int a[3]={1,2,3}; for (int i=0;i<3;i++) { prinf("%d",*(a++); //错误,正确方法如下: } int *p; //重新定义一个指针,使其指向数组的首地址 p=a; for (int i=0;i<3;i++) {原创 2021-02-03 19:40:40 · 1860 阅读 · 0 评论 -
函数声明时 要不要 加 extern
待补充。。。1、通常做法–在.c中定义,在.h中extern出来,那么其他编译单元include这个.h文件就可以使用这个变量。2、函数如果定义在本.c文件中,或者定义在一个.h文件中并且本.c文件#include了这个.h就不用加extern,因为这两种情况下本.c文件都可以直接找到一旦有一个函数定义在另一个.c文件中,而你要想在本.c文件中使用的时候就必须用extern关健字声明一下,否则链接会出错。3、此外,函数申明默认就是extern的,所以函数声明前的extern可以省略不加。...原创 2021-01-23 17:48:51 · 5996 阅读 · 0 评论 -
#define 带参数的宏定义
#define SUM(a,b) a+b#define square(x) ((x) * (x))#define LOG_ERR(tag, str) printf(tag+str)原创 2021-01-23 17:29:49 · 251 阅读 · 0 评论 -
C C++-- void *p 通用指针 or 泛指针
*void p 通用指针 or 泛指针通常指针有两个属性:指向变量/对象的地址和类型,指针的值存储了所指向变量/对象的地址,类型决定了变量/对象所占内存的长度。void *p 称为通用指针 或 泛指针,它在定义时,没有指定类型。可以使用void指针来代替其他类型指针,或者使用其他类型指针代替void指针。例: int a = 1; char b = 'A'; void *ptr = NULL; ptr = &a; //用void指针指向int型的地址 ptr = &原创 2021-01-23 15:38:28 · 996 阅读 · 1 评论 -
so dll动态链接库,动态加载的库函数dlopen,dlclose,dlsym,somanager,somanager.load
静态链接库与动态链接库:静态链接库和程序打包在一起,确定是安装包过大,后续修改需要重新生成安装包;动态链接库,和程序安装包是独立的,后续库文件需要升级,只需要更新动态链接库即可,比较方便灵活。加载动态库的两种方式:一是在程序开始时将库文件(.so,.dl)加载到内存中;另一种是动态的加载,在程序需要时加载,不需要时卸载。此时使用动态加载的函数库对动态链接库库进行加载。动态加载的函数库Dynamically Loaded (DL) Libraries:动态加载的函数库是一类函数库,它可以在程原创 2021-01-15 11:17:46 · 358 阅读 · 0 评论 -
so动态库的成及测试
so文件是是ELF格式文件,共享库(动态库),类似于DLL。节约资源,加快速度,代码升级简化。so动态库文件的生成:1、gcc -fPIC -g -c s.c -o libs.o //编译:得到输出文件libs.o2、gcc -g -shared -o libs.so libs.o //链接:得到输出文件libs.so例子中测试文件的生成:gcc -g ts.c -o ts -L. –ls //一下是例子:先写一个C文件:s.c1. #include <stdio.h> 2原创 2020-12-28 11:30:35 · 779 阅读 · 0 评论 -
2020-12-28
gcc 与 g++ 分别是 gnu 的 c & c++ 编译器 gcc/g++ 在执行编译工作的时候,总共需要4步:.cpp-> .i-> .s-> .o ->可执行文件(如.exe)1、预处理,生成 .i 文件[预处理器cpp]2、将预处理后的文件转换成汇编语言, 生成.s 文件[编译器egcs]3、有汇编变为目标代码(机器代码)生成 .o 文件[汇编器as]4、连接目标代码, 生成可执行程序 [链接器ld]常用参数详解:-c 只进行活预处理,编译,和汇编原创 2020-12-28 10:24:39 · 69 阅读 · 0 评论 -
C 语言中 static 的作用
(1)第一条也是最重要的一条:隐藏用于内部函数前,使定义的函数只有当前文件可以调用。(2)保持变量的持久性存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。全局变量和 static 变量会储在静态存储区,和全局变量比起来,static 可以控制变量的可见范围。#include <stdio.h>int fun(void){static int count = 10; // 此语句只在函数第一次调用时执行,//后续函数调用此变量的初始值为上次调用后的值原创 2020-08-02 20:10:04 · 146 阅读 · 0 评论