c
专业的坑
这个作者很懒,什么都没留下…
展开
-
c语言 某位清零 获取某位值
将某位/几位清零#include <stdio.h>int main(){ int num=0; //需要清零的数 int bit; //需要清零的位数 int zero_sit;//清零的位置 printf("input num\n"); printf("input bit\n"); printf("input zero_sit\n"); scanf("%x",&num); scanf("%x",&bit); scanf("%x",&zer.原创 2020-10-23 16:29:08 · 4123 阅读 · 0 评论 -
undefined reference to
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func’关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。链接时缺失了相关目标文件(.o)测试代码如下:然后编译。gcc -c test.cgcc –c main.c得到两个 .o 文件,一个是 main.o,转载 2020-08-15 16:37:03 · 215 阅读 · 0 评论 -
pthread_create()函数参数详解和传参的使用
题外话:用的vscode编译的程序。发现一个问题,就是编译的时候提示没有gcc,但是应该是安装了的。打开命令端,输入gcc -v,提示没有gcc。因为安装了qt。默认的就有gcc,所以就打开qt的安装路径下C:\Qt\Qt5.12.4\Tools\mingw730_64\bin,路径下文件如下图所示然后直接把该路径添加到环境变量,就可以使用gcc 和g++了贼有意思,gcc也能编译,g++也能编译。在linux下通过gcc编译c程序,g++编译c++程序,另外就是也没有加-lpthread连接原创 2020-07-22 20:04:42 · 8244 阅读 · 0 评论 -
socket can编程
http://velep.com/archives/1181.html原创 2020-05-26 14:42:52 · 170 阅读 · 0 评论 -
玩个多级指针
定义:一个指向指针变量的指针变量,称为多级指针。对于指向处理数据的指针变量称为一级指针变量,简称一级指针。而把指向一级指针变量的指针变量称为二级指针变量,简称二级指针。二级指针变量的说明形式:<存储类型> <数据类型> ** <指针名>总结:注意加粗的部分,指向指针变量!一定要是变量。如果指向的是数组名(也就是数组的首地址,会报警告,因为数组名是地址常量,后边有例子)。#include <stdio.h>int main(int argc, c.原创 2020-05-21 17:43:54 · 137 阅读 · 0 评论 -
c 函数值传递
首先要清楚什么叫函数的形参和实参。形参:任何函数实现的参数都是形参。实参:调用函数时候,传入的参数是实参。实参可以给形参传参,形参不能够给实参传参。#include <stdio.h>void exchange(int a,int b){ int t; printf("&a = %p,&b = %p\n",&a,&b ); t = a; a = b; b = t; printf("a = %d,b = %d\n",a,b );原创 2020-05-20 15:41:44 · 246 阅读 · 0 评论 -
c语言 const关键字
const修饰变量(非指针),使变量常量化,也就是使变量不能够被修改eg:const int a = 10; int const a=10;此时a只能是10,不能被改变了。如果没有用const修饰,a可以被赋值,比如a=20;const修饰指针变量,会使指针变量常量化,但是要注意const的位置1.const int *p 此时const修饰的是指针指向的内容,限制通过指针去改变指向的内容,但是内容本身可以修改,只是不能通过指针修改。指针的指向也是可以改变。eg:#include <st.原创 2020-05-20 10:20:35 · 135 阅读 · 0 评论 -
字符串处理函数
strcpy函数:首先看一个字符串拷贝函数的用法:#include <stdio.h>#include <string.h>int main(int argc, char const *argv[]){ char p[] = "hello"; char *a = p; char *q = "world"; strcpy(p,q); printf("%s\n",p ); return 0;}打印结果就是world。注意到两点,1.目的地址是一个原创 2020-05-15 17:32:42 · 133 阅读 · 0 评论 -
一个冒泡排序引发的 ‘思考’
一个冒泡排序引发的 ‘思考’首先看一个冒泡排序的代码,如下:#include <stdio.h>#if 1void maopao(int a[]) //此处形参等同于int *a{ printf("%ld\n",sizeof(a)/sizeof(int));//调试打印 for(i=0;i<n;i++) //对比趟数 { for(j=i;j<n;j++) //对比次数,从小到大排列 { if(a[j] > a[j+1]) { temp =原创 2020-05-15 16:36:45 · 161 阅读 · 0 评论 -
linux下类everthing搜索工具
类似Windows上的everything,在Windows上是谁用谁知道.安装链接:https://launchpad.net/~christian-boxdoerfer/+archive/ubuntu/fsearch-daily?field.series_filter=bionic官方安装没有看到安装名称是什么,试了一圈都不行,后来终于找到了.步骤:添加PPAsudo add-apt...原创 2020-04-03 15:48:54 · 767 阅读 · 0 评论 -
c代码规范
开头以/**/说明,中将两个*可以将说明对齐宏定义和函数声明对其。宏定义的时候最好用一个空格加两个tab键,因为不同的宏名字长度不一样,会造成后边的变量不对齐。函数声明的时候,要一个tab键。因为void和int长度不一样,和long,unsigned int长度更不一样定义变量的时候要对齐。函数名不要顶头写,让注释和#if 0 #endif调试的顶头写。如果有多个if en...原创 2020-03-27 18:39:03 · 130 阅读 · 0 评论 -
匈牙利命名规则
匈牙利命名规则匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述(对象描述的时候第一个字母要大写),其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。eg:class xx{public:private: string m_strName; //m_表示c++类成员,str表示...原创 2019-12-20 16:09:16 · 638 阅读 · 0 评论 -
c语言日志功能实现
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#ifdef WIN32#include <windows.h>#else#include <unistd.h> // linux下头文件#endif ...转载 2019-07-18 14:14:55 · 563 阅读 · 0 评论 -
linux 根文件系统的制作过程
文件系统制作步骤1,配置busybox1)下载源码2)进入busybox,make menuconfig 选配2,制作根文件基本目录(make进行编译,Make install 把它编译成工程文件,方便我们使用将所有相关文件都放到_install目录下)3,创建其他需要的目录(mkdir dev etc mnt proc var tmp sys root)4,库目录设置(拷贝交叉编译工...原创 2019-02-21 18:11:22 · 314 阅读 · 0 评论 -
巧用异或
与其它语言不同,C语言和C++语言的异或不用xor,而是用“ ^ ”,键入方式为Shift+6。(而其它语言的“^”一般表示乘方)若需要交换两个变量的值,除了通常使用的借用中间变量进行交换外,还可以利用异或,仅使用两个变量进行交换,如:123456void swap(int &amp;amp;amp;a,int &amp;amp;amp;b){a=a^b;b=b^a;a=a^b;}详解:123...原创 2019-01-11 19:43:26 · 428 阅读 · 0 评论