
linux C
文章平均质量分 56
Wang20122013
喷泉有了压力才优美,滴水有了坚持才有了穿石。顶住压力,享受压力,坚持奋斗。
展开
-
结构体中char a[0]用法——柔性数组
这种形式是非法的,C99支持的形式是形同intitem[];C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员,但结构中的柔性数组成员前面必须至少一个其他成员。包含柔性数组成员的结构用malloc()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。这样我们就可以定义一个可变长的结构,用sizeof(type_a)得到的只有4,就是sizeof(nCnt)=sizeof(int)那个0个元素的数组没有占用空间,而后我们可以进行变长操作了。...转载 2022-07-20 10:08:20 · 630 阅读 · 1 评论 -
linux 驱动 printk 输出变量格式
如果变量类型是 , 使用 prink 的格式说明符 : int %d 或者 %x( 注: %d 是十进制, %x 是十六进制 ) unsigned int %u 或者 %x long %ld 或者 %lx unsigned long %lu 或者转载 2021-12-21 15:32:12 · 1053 阅读 · 0 评论 -
int 和 long int 的区别在哪里?
16位机:int的取值位16位 long int的取值为32位32位机:int的取值位32位,long int的取值为32位64位机:int的取值位32位,long int的取值为32位现在的计算机基本都是64位机,所以在学习c语言时,在取值范围上可以认为int和long int是无区别的....转载 2021-12-21 15:19:53 · 8858 阅读 · 1 评论 -
size_t
之前在《内存拷贝的注意事项》一文中提到过size_t,可能许多人对这个类型不太熟悉没有用过或者根本不敢去用,最近看到一篇文章对这个类型讲的比较详细,便翻译过来让不熟悉的同学可以知道它产生的原因以及如何使用。 原文地址: Why size_t matters前言:使用size_t可能会提高代码的可移植性、有效性或者可读性,或许同时提高这三者。在标准C库中的许多函数使用的参数或者返回值都是表示的用字节表示的对象大小,比如说malloc(n) 函数的参数n指明了需要申请的空间大小,还有memcpy(s1,转载 2021-12-21 15:15:58 · 2557 阅读 · 0 评论 -
C语言const详解
const 在实际编程中用得并不多,const 是 constant 的缩写,意思是“恒定不变的”!它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。说 const 定义的是变量,但又相当于常量;说它定义的是常量,但又有变量的属性,所以叫常变量。用 const 定义常变量的方法很简单,就在通常定义变量时前面加 const 即可,如:const int a = 10;const 和变量类型 int 可以互换位置,二者是等价的,即上条语句等价于:int const a = 1转载 2021-12-21 13:25:27 · 2549 阅读 · 1 评论 -
C语言函数指针详解
什么是函数指针如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。那么这个指针变量怎么定义呢?虽然同样是指向一个地址,但指向函数的指针变量同我们之前讲的指向变量的指针变量的定义方式是不同的。例如:int(*p)(int, int);这个语句就定义了一个指向函数的指针变量 p。首先它是一个指针变量,所以要有一个“*转载 2021-12-21 11:25:38 · 173 阅读 · 0 评论 -
C语言void指针及使用注意事项详解
void 指针是一种特殊的指针,表示为“无类型指针”,在 ANSI C 中使用它来代替“char*”作为通用指针的类型。由于 void 指针没有特定的类型,因此它可以指向任何类型的数据。也就是说,任何类型的指针都可以直接赋值给 void 指针,而无需进行其他相关的强制类型转换,如下面的示例代码所示:void *p1;int *p2;…p1 = p2;虽然如此,但这并不意味着可以无需任何强制类型转换就将 void 指针直接赋给其他类型的指针,因为“空类型”可以包容“有类型”,而“有类型”则不能包容转载 2021-12-21 10:58:26 · 6233 阅读 · 0 评论 -
C语言static变量详解
在 C 语言中,static 关键字不仅可以用来修饰变量,还可以用来修饰函数。在使用 static 关键字修饰变量时,我们称此变量为静态变量。静态变量的存储方式与全局变量一样,都是静态存储方式。但这里需要特别说明的是,静态变量属于静态存储方式,属于静态存储方式的变量却不一定就是静态变量。例如,全局变量虽然属于静态存储方式,但并不是静态变量,它必须由 static 加以定义后才能成为静态全局变量。考虑到可能会有不少读者对静态变量作用不太清楚,本节就来详细讨论一下它的主要作用。隐藏与隔离的作用上面已经阐转载 2021-12-20 16:53:52 · 320 阅读 · 0 评论 -
负数在计算机中的存储和表示
1.负数在计算机中的存储计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同 。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理2.补码的计算正整数的补码是其二进制表示,与原码相同求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1+7 0000 0111 ==》1111 10原创 2021-09-18 13:41:47 · 2704 阅读 · 1 评论 -
大小端的判断
大端:低地址是高位小端:低地址是地位原创 2021-04-26 14:03:16 · 108 阅读 · 0 评论 -
C语言字节对齐 __align(),__attribute((aligned (n))),#pragma pack(n)
__attribute__选项 我们可以按照自己设定的对齐大小来编译程序,GNU使用__attribute__选项来设置,比如我们想让刚才的结构按一字节对齐,我们可以这样定义结构体 struct stu{ char sex; int length; char name[10]; }attribute ((aligned (1))); struct stu my_stu; 则sizeof(my_stu)可以得到大小为15。 上面的定原创 2021-04-14 17:28:31 · 431 阅读 · 0 评论 -
get_order 和__get_free_pages
__get_free_pages() 函数的第一个变量 gfp_mask 可以直接使用 kmalloc() 函数中使用的参数。但是,第二个变量不是指定大小,而表示 2^order 次方个页,如是 0 就分配一个页,是 3 就分配 8 个页。如果想为分配一块内存空间,但嫌计算所需多少页比较麻烦,那可以使用 get_order() 函数来获取 order 值。如:char *buff;int order;order = get_order (8192);buff = __get_free_pages原创 2021-01-20 14:49:34 · 3890 阅读 · 0 评论 -
C语言中void*详解及应用
void在英文中作为名词的解释为“空虚;空间;空隙”;而在C语言中,void被翻译为“无类型”,相应的void *为“无类型指针”。void似乎只有“注释”和限制程序的作用,当然,这里的“注释”不是为我们人提供注释,而是为编译器提供一种所谓的注释。void的作用:1.对函数返回的限定,这种情况我们比较常见。2.对函数参数的限定,这种情况也是比较常见的。一般我们常见的就是这两种情况:当函数不需要返回值值时,必须使用void限定,这就是我们所说的第一种情况。例如:void func(int a,cha转载 2021-01-19 16:15:20 · 867 阅读 · 0 评论