
C语言
while_false_
一起来刷题呀
展开
-
内存泄漏与野指针
内存泄漏当你要为变量a申请一块内存空间的时候,需要用到malloc函数。如何申请这块内存空间呢?这就变成程序的工作了。程序首先会向系统申请一块内存空间,然后程序会把申请好的这块内存空间的首地址赋给变量a,假设这时候变量a拿到的首地址为0x1234,如果我们现在要对变量a进行循环操作,那么每循环一次,变量a就会拿到一个新的首地址,这样的话,内存空间就会被不断的分配给变量a。但是现在要注意的是每拿...转载 2019-10-14 10:32:47 · 155 阅读 · 0 评论 -
理解CAS与__sync_bool_compare_and_swap(原子操作)
源博客地址:https://blog.youkuaiyun.com/stpeace/article/details/81150393CAS是compare and swap, 简单来说就是,在写入新值之前, 读出旧值, 当且仅当旧值与存储中的当前值一致时,才把新值写入存储。__sync_bool_compare_and_swap是可供程序员调用的接口, 为什么需要CAS呢? 一起来看...转载 2019-04-09 11:17:26 · 14648 阅读 · 3 评论 -
解决:invalid application of `sizeof' to incomplete type `char[] '错误
原文:https://blog.youkuaiyun.com/he__yuan/article/details/79731923//a.c文件#include "a.h" char array[]={0XED,0X34,0X40,0X34};//a.h文件#ifndef _A_H#define _A_H#define size (sizeof(array)/sizeof(array[0])...转载 2019-06-05 09:22:55 · 1262 阅读 · 0 评论 -
C语言指针详解(经典,非常详细)
前言:复杂类型说明要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我总结了一下其原则:从变量名处起,根据运算符优先级结合,一步一步分析.下面让我们先从简单的类型开始慢慢分析吧:...转载 2019-09-17 17:37:30 · 277 阅读 · 0 评论 -
C语言数组详解(生动,非常形象)
这个博主写的非常好,形象易懂!转载 2019-09-18 15:10:25 · 501 阅读 · 0 评论 -
C语言内存管理详解
超详细版本https://blog.youkuaiyun.com/weibo1230123/article/details/81427666详细版本https://blog.youkuaiyun.com/continueOo/article/details/72453294浅析版本https://blog.youkuaiyun.com/ZYB946300928/article/details/87182875...转载 2019-09-23 11:11:31 · 425 阅读 · 0 评论 -
C语言关键字--const
基本解释 const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。 虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题。问题:const变量 & 常量 为什么我象下面的例子一样用一...转载 2019-09-26 10:32:37 · 380 阅读 · 0 评论 -
C语言关键字--register
register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对。因为,如果定义了很多register变量,可能会超过CPU的寄存器个数,超过容量。所以只是可能。#include <iostream>using namespace std;int f(){ register int i=0; ...转载 2019-09-26 15:12:11 · 513 阅读 · 0 评论 -
C语言关键字--static
概述static关键字在c语言中比较常用,使用恰当能够大大提高程序的模块化特性,有利于扩展和维护。但是对于c语言初学者,static由于使用灵活,并不容易掌握。本文就static在c语言中的应用进行总结,供参考使用。错漏之处,请不吝指正。在程序中使用static变量1. 局部变量普通局部变量是再熟悉不过的变量了,在任何一个函数内部定义的变量(不加static修饰符)都属于这个范畴。编译...转载 2019-09-26 15:30:35 · 158 阅读 · 0 评论 -
C语言编译和内存模型
过程:$gcc hello.c $./a.out结果:Hello World包含四个步骤:预处理、编译、汇编、链接。预处理:$gcc -E hello.c -o hello.i主要处理规则:1)展开宏定义;2)条件编译“#if”,“#ifdef”,“#elif”,“#else”,“#endif”;3)处理预编译指令(#include),将文件插入到改指令位置,递归进行;4...原创 2019-09-26 16:03:42 · 202 阅读 · 0 评论 -
C语言0长度数组(可变数组/柔性数组)详解
作者:JeanCheng原文:https://blog.youkuaiyun.com/gatieme/article/details/641313221 零长度数组概念众所周知, GNU/GCC 在标准的 C/C++ 基础上做了有实用性的扩展, 零长度数组(Arrays of Length Zero) 就是其中一个知名的扩展.多数情况下, 其应用在变长数组中, 其定义如下struct Packet...转载 2019-04-08 10:53:21 · 309 阅读 · 0 评论 -
位运算的基本操作
指定位置置1value = value | 1 << bit_postionvalue != 1 << bit_postion指定位置置0value = value & ~(1 << bit_postion)value &= ~(1 << bit_postion)原创 2019-04-04 10:45:46 · 189 阅读 · 0 评论 -
C语言运算符优先级
运算符结合性() [] -> .自左向右! ~ ++ – - (type) * & sizeof自右向左* / %自左向右+ -自左向右<< >>自左向右< <= > >=自左向右== !=自左向右&自左向右^自左向右|自左向右...原创 2019-04-04 10:35:05 · 112 阅读 · 0 评论 -
Linux系统编程——线程同步与互斥:互斥锁
转自https://blog.youkuaiyun.com/tennysonsky/article/details/46494077转载 2018-12-04 10:26:57 · 207 阅读 · 0 评论 -
自旋锁与互斥锁相关api
POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。Pthreads提供了多种锁机制:...转载 2018-12-04 10:46:17 · 308 阅读 · 0 评论 -
C语言关键字--volatile
// 释义volitile是一个类型修饰符(type specifier),就像我们熟悉的const一样,它是被设计用来修饰被不同线程访问和修改的变量;// 作用volitile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了简单地说就是防止编译器对代码进行优化...转载 2018-12-12 10:46:15 · 359 阅读 · 0 评论 -
常见面试题-环形链表
环形链表-找环点leetcode: 141-环形链表判断是否有环/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */bool hasCycle(struct ListNode *head) { str...原创 2019-01-25 11:06:37 · 417 阅读 · 0 评论 -
中缀表达式变换为后缀表达式(逆波兰表达式)
/* 中缀表达式转换为逆波兰表达式(后缀表达式) */#define STACK_SIZE 10typedef struct STACK{ char *base; char *top; int stack_size;}rpn_stack;rpn_stack *init_stack() { rpn_stack *my_stack = (rpn_stack *)calloc(1,siz...原创 2019-01-28 15:52:12 · 469 阅读 · 0 评论 -
并查集入门+进阶
入门解释:http://www.cnblogs.com/xzxl/p/7226557.html进阶解释:http://www.cnblogs.com/xzxl/p/7341536.html入门篇模板#define ARR_SIZE 100int pre[ARR_SIZE];int deep[ARR_SIZE];void init() { int i = 0; for (i = ...原创 2019-01-29 15:25:43 · 168 阅读 · 0 评论 -
编译错误--提领指向不完全类型的指针
包含声明结构体定义的头文件。这个错误多出现在访问结构或者联合体的成员。由于结构体定义在了C文件里,为了解决这个错误,只好把函数写到C文件里。错误的原因声明了结构体/联合体的指针变量,但没有结构体/联合体的定义,当使用结构体变量时,访问时未知的,编译器会报错。所以在出现这个错误时,需要include结构体/联合体的定义。...转载 2019-03-29 14:13:09 · 563 阅读 · 0 评论 -
rand 和 srand 的用法详解
参考:https://blog.youkuaiyun.com/xiaoxiongli/article/details/1667215转载 2018-08-13 14:41:14 · 524 阅读 · 0 评论