Linux C
杰Tang_fighting
这个作者很懒,什么都没留下…
展开
-
C语言的宏编写(面试题)
问题:写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个分析:需要注意宏与函数的区别。宏的基本特点是变量替换,仅是简单的字符串替换,并不会设计变量类型的检查,因此在编写程序的时候需要多加注意。实现:#define MIN(X,Y) ((X)注意点:1.宏的基本特点是简单的字符串替换,因此变量需要用括号括起来。下面的写法都是错误的:#define MIN(X,Y) (原创 2014-03-04 22:55:54 · 1102 阅读 · 0 评论 -
C语言内存分配
【搬运工】在C语言中,根据数据在内存中存在的时间(生存期)不同,将内存空间分为三个区:1.程序区:用于存储程序的代码,即程序的二进制代码;2.静态存储区:用于存储全局变量和静态变量,这些变量的空间在程序编译时就已经分配好了;3.动态存储区:用于在程序执行时分配的内存,又分为:堆区(heap)和堆栈区(stack)两种。 堆转载 2014-04-09 14:34:25 · 732 阅读 · 0 评论 -
union赋值及小端系统
【中兴面试题】原创 2014-04-04 22:55:57 · 889 阅读 · 0 评论 -
Makefile:2: *** 遗漏分隔符 。 停止。
用make命令编译Makefile 时出现Makefile:2: *** 遗漏分隔符 。 停止。【错误的Makefile】all : main.c foo1.c foo2.c foo3.cgcc main.c foo1.c foo2.c foo3.c -o allgcc、rm、cp前面是tab分割符,不能用空格,否则会出现:“makefile:2: *** 遗漏分隔符原创 2014-03-25 13:58:50 · 1552 阅读 · 0 评论 -
C/C++ 中 exit() 函数
【知乎上的问题】C/C++ 中 exit() 函数的参数到底有什么意义?C 语言的设计之初就是为 Unix 系统设计的,而这个系统是『很多程序互相配合』搭配成一个系统。每个运行着的程序都是进程,而进程就会有父进程,父进程通常是直接启动你的进程,父进程死亡的进程会被 init 收养,其父进程变为 init,而 init 的父进程是进程 0,进程 0 则是系统启动时启动的第一个进程。e原创 2014-03-24 10:30:08 · 48522 阅读 · 7 评论 -
char * const p char const * p const char *p 三个有什么区别?
[定义理解]char* const p; p为指向字符变量的指针,地址不变,地址内容可变const char *p; p为指向字符变量的指针,地址可变,地址内容不变[记忆方法]const * p (不管char的位置,中文翻译就是常量的指针, 从左往右读,地址可变,地址内容不变)* const p (一样从左往右读,指针常量,地址不变,地址内容可变)const char原创 2014-03-28 10:48:58 · 9379 阅读 · 0 评论 -
C语言中struct与union的区别
【问题】有如下声明和定义:typedef union { long i; int k[5]; char c; } DATE;struct data { int cat; DATE cow; double dog; } too;DATE max;请说明一下语句的输出结果。printf ("%d", sizeof(struct data ) + sizeof(max) )原创 2014-03-19 11:50:59 · 1089 阅读 · 0 评论 -
char p[] = "hello world" 与 char *p = "Hello world"
百度知道上看到的一个问题,数组和指针之间的差别。记录如下:【问题】请看两个程序:(1)char *GetString(void){ char p[] = "Hello world"; return p;}void main(){ char *str = NULL; str = GetString(); cout << str << endl;}(2)char原创 2014-03-07 10:22:59 · 2191 阅读 · 0 评论 -
C语言的谜题
本篇文章《C语言的谜题》展示了14个C语言的迷题以及答案,代码应该是足够清楚的,而且我也相信有相当的一些例子可能是我们日常工作可能会见得到的。通过这些迷题,希望你能更了解C语言。如果你不看答案,不知道是否有把握回答各个谜题?让我们来试试。1、下面的程序并不见得会输出 hello-std-out,你知道为什么吗?1234转载 2014-03-09 11:50:12 · 778 阅读 · 0 评论 -
c语言中逗号运算符和逗号表达式
转载自great_ghoulC语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如: 3+5,6+8称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为 表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为1转载 2014-03-09 11:46:18 · 1071 阅读 · 0 评论 -
字符串倒序(面试题)
【问题】:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”。请指出代码中一共有几处错误,以及出错原因。#includeint main(){ char *src="hello,world"; char *dest=NULL; int len=strlen(src); dest=(char*)malloc(len); char *d=dest; cha原创 2014-03-07 10:11:31 · 1310 阅读 · 0 评论 -
int *ptr=(int *)(&a+1)(面试题)
【问题】:请写出以下程序的输出结果。int main(){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d\n",*(a+1),*(ptr-1));}【分析】:此题需要理解指针和数组的内在含义。【结果】:2,5【理论知识】:我们首先需要搞明白a,&a.a既是数据名,又是指向数组第一个元素的指针。s原创 2014-03-06 11:29:41 · 3805 阅读 · 0 评论 -
scanf()函数字符输入(面试题)
最近在复习c语言的时候遇到一个看似简单的面试题,让我对scanf()函数的使用有了更深刻的认识。记录如下:【问题】:从键盘接受一组英文单词,输入格式为:“a.xxx b.xxx c.xxx”(xxx代表输入的单词),然后再屏幕打印输入的三个单词。【分析】:采用单个字符输入模式需要匹配比较的内容较多,实现上会变得麻烦,而采用字符串输入模式可以过滤掉多余的空格,使整个操作变得非常简单。【解原创 2014-03-05 13:47:00 · 1076 阅读 · 0 评论 -
int型转字符串型函数itoa()实现
#include #include void Myitoa(int n, char *s){ int i, j; int sign; int tmp; if((sign = n) < 0) n = -n; j = 0; while((i = n % 10)> 0) { s[j++] = i + '0';//将整型转换成字符 n = n / 10; } if(s原创 2014-04-22 21:48:00 · 1170 阅读 · 0 评论