linux c
文章平均质量分 79
wong_daniel
我最喜欢的一句话 i do and i understand
展开
-
数组名和数组名取地址的区别
以下代码会打印出什么样的日志呢?#include int a[2] = {1,2};int main(){ printf("a = %p\n", a); // I printf("&a = %p\n", &a); // II原创 2011-10-09 21:19:54 · 45648 阅读 · 35 评论 -
c语言模拟实现栈的模板化
对于写过表达式解析的同学一定不会陌生,我们需要两个栈,一个是符号栈(char),一个是操作数栈(int). 经典的数据结构书中的栈,类型是定死了的。所以能够实现一个栈,自己指定类型,想必编写接下来代码的心情要愉快的多。本实现过程采用宏定义,这样然接口看来就好像实现了模板化。这里有篇csdn的文章也是实现了模板化的,但是它采用的是预处理运算符## 实现的,及字符串化(stringificati原创 2011-10-29 22:08:06 · 1714 阅读 · 0 评论 -
关于c中volatile关键字(转贴)
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic v转载 2012-01-31 16:48:09 · 862 阅读 · 0 评论 -
Linux 进程栈和线程栈的区别
注:本文所涉及的环境为Linux, 下文讨论的栈跟内核栈,没有任何的关系,关于内核栈,请参考《深入Linux内核架构》中的2.4.1 进程复制这里有如下几个问题,线程栈的空间是开辟在那里的? 线程栈之间可以互访吗?为什么在使用pthread_attr_setstack函数时,需要设置栈的大小,而进程task_struct的 mm_struct *mm 成员中却并没有却并没有stack_size原创 2012-11-05 11:31:14 · 10717 阅读 · 2 评论