- 博客(8)
- 收藏
- 关注
原创 程序的内存区域划分
按照程序分段来看,ELF可执行程序就分为3段:# size a.out1792 + 381 + 0 = 2173 (text, data, bss)data: 已经初始化的全局变量和常量字符串等bss: 没有初始化的全局变量data + bss 为全局数据区;text + data + bss 为静态存储区;堆区和栈区是程序运行时分配的堆区: 存放动态数据;栈区: 存放局部数据. 例如:c
2006-07-11 14:28:00 852
转载 char *p="1234567890";语句的问题
>> char *p="1234567890"; >> 这个语句有什么毛病吗? 这个语句是有问题的,解释如下: "1234567890"是一个字符串常量,C和C++的标准都规定:任何试图改变字符串常量的行为其结果是“未定义的”。但是上述语句的指针定义却不能阻止通过指针 p 来改变字符串常量"1234567890"的这种行为,比如:*p = a;,编译器发现不了这个错误。
2006-07-11 14:01:00 1599
原创 算术运算时,操作数类型不匹配产生的陷阱
环境:SUN 5.9 WS4.2 unsigned int i=1; if(i printf("1 else printf("1 > -1/n");结果:# 1 unsigned int i=1; if((int)i printf("1 else printf("1 >
2006-05-16 21:47:00 829
原创 标准输入缓冲给scanf()带来的问题
问题一:scanf()接收数据时,遇到空格,回车,TAB会结束数据输入。分析下面的代码:int main(){ char string[20], str1[20], str2[20]; scanf("%s",string); //用户输入字符串"I Love You!",但scanf只能把标准输入流中的I传给string[ ],余下的字符存在缓冲区中 printf(
2006-05-13 19:57:00 1323
原创 求值顺序问题
求值顺序的概念与运算符优先级完全不同运算符优先级是关于单个表达式,如a+b*c内各数字与运算符的结合顺序。求值顺序是关于多个表达式内,各个表达式的求值顺序。c中只有4个运算符存在规定的求值顺序:&& || ?: , (,是逗号运算符而非分隔符) 例1.考虑下面的表达式: a按照c语言定义,应先求a 分隔函数的逗号并非逗号运算符例2.函数f(x,y)的x,y求值顺
2006-05-13 17:32:00 1025
原创 c声明形式与使用形式
int *a; //a pointer to an integerint **a; //a pointer to a pointer to an integerint *a[10]; //an array of 10 pointer to integersint (*a)[10]; //a pointer to an array of 10 integersint (*a)
2006-05-13 08:59:00 758
原创 fork exec对子进程继承父进程信号处理机制的影响--APUE
当一个进程调用fork时,因为子进程在开始时复制父进程的存储映像,信号捕捉函数的地址在子进程中是有意义的,所以子进程继承父进程的信号处理方式。特殊的是exec,因为exec运行新的程序后会覆盖从父进程继承来的存储映像,那么信号捕捉函数在新程序中已无意义,所以exec会将原先设置为要捕捉的信号都更改为默认动作。
2006-05-09 18:45:00 3022
原创 IO缓存问题--APUE
#include #include "ourhdr.h"int main(){ char buf[]="a write to stdout/n"; size_t size=sizeof(buf); write(STDOUT_FILENO, buf, size); printf("hello/n"); /* we dont flush stdout */
2006-05-09 18:42:00 1198 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人