似水流年

夜半灯青书香暖,一唳鹤鸣起寒烟
个人信息
  • 今日访问: 1
  • 总访问量:4594
  • 开博时间:2012-07-28
  • 博客排名:暂无排名
博文分类
博客成员
博客门铃
博文

Typedef和define的区别

Typedef和define都可以用来给对象取一个别名,但是两者却有着很大不同。

1. 首先,二者执行时间不同

关键字typedef在编译阶段有效,由于是在编译阶段,因此typedef有类型检查的功能。

Define则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字符串替换,而不进行任何检查。

 

#define用法例子:

#define f(x) x*x

main( )

{

 int a=6,b=2,c;

 c=f(a) / f(b);

 printf("%d //n",c);

}

程序的输出结果是: 36,根本原因就在于#define只是简单的字符串替换。

 

2.

分类:C/C++ | 评论:0 | 浏览:1 | 收藏 | 查看全文>>

Typedef和define的区别

Typedef和define都可以用来给对象取一个别名,但是两者却有着很大不同。

1. 首先,二者执行时间不同

关键字typedef在编译阶段有效,由于是在编译阶段,因此typedef有类型检查的功能。

Define则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字符串替换,而不进行任何检查。

 

#define用法例子:

#define f(x) x*x

main( )

{

 int a=6,b=2,c;

 c=f(a) / f(b);

 printf("%d //n",c);

}

程序的输出结果是: 36,根本原因就在于#define只是简单的字符串替换。

 

2.

分类:C/C++ | 评论:0 | 浏览:0 | 收藏 | 查看全文>>

经典嵌入式笔试题

> 预处理器(Preprocessor) 

1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) 

#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 

我在这想看到几件事情: 

1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 

2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中 

有多少秒而不是计算出实际的值,是更清晰而没有代价的。 

3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编 

译器这个常数是的长整型数。 

4).

分类:嵌入式 | 评论:0 | 浏览:3 | 收藏 | 查看全文>>

冒泡排序以及冒泡排序的优化

冒泡排序法第一次排序会把最大的冒到最上面,第二次会把次大的泡冒到最大的后面,一次类推····,另外在排序的次数上会逐渐减少。看代码:

void bubble_sort(int *a,int n)

{

    for(int i=0;i

        for(int j = 1;j

        {

            if(a[j-1]>

分类:数据结构 | 评论:0 | 浏览:25 | 收藏 | 查看全文>>

int a[5],a+1与&a+1

#include

int main(void)

{

 

     int a[5] = {1, 2, 3, 4, 5};

     int *ptr1 = (int*)(&a + 1); //这里偏移量是整个数组的大小

      int *ptr2 = (int*)((int)a + 1); //a地址再加一个字节,直接数值相加而不是指针

      int *ptr3 =&n

分类:C/C++ | 评论:0 | 浏览:16 | 收藏 | 查看全文>>

死锁产生的原因及四个必要条件

产生死锁的原因主要是:

(1) 因为系统资源不足。

(2) 进程运行推进的顺序不合适。

(3) 资源分配不当等。

如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则

就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。

产生死锁的四个必要条件:

(1) 互斥条件:一个资源每次只能被一个进程使用。

(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之

一不满足,就不会发生死锁。

死锁的解除与预防:

分类:linux | 评论:0 | 浏览:136 | 收藏 | 查看全文>>

const与#define宏定义的区别

const定义的只读变量在程序运行过程中只有一份拷贝(因为它是全局的只读变量,存放在静态区),而#define定义的宏常量在内存中有若干个拷贝。

 

#define宏是在预编译阶段进行替换,而const修饰的只读变量是在编译的时候确定其值。

 

#define宏没有类型,而const修饰的只读变量具有特定的类型

 

===========================================

const int *p;   //p可变,p指向的对象不可变

int const*p;  //p可变,p指向的对象不可变

int *const p;  //p不可变,p指向的对象可变

const int *const p;  

分类:C/C++ | 评论:0 | 浏览:7 | 收藏 | 查看全文>>

栈和队列

1、设计含min函数的栈,要求minpushpop的时间复杂度都是o(1)

 

 #define MAX (100)

typedef struct

{

 int data;

 int min;

}Stack_Data;

typedef struct

分类:数据结构 | 评论:0 | 浏览:8 | 收藏 | 查看全文>>

单向链表操作

1、在单向链表中如何快速查到倒数第n个节点?

操作方法和步骤:

(1)定义2个指针p1,p2。

(2)使用循环让p1指向顺数第n个节点,同时p2指向第头结点;

(3)然后,p1和p2同时移动,直到p1指向NULL,此时p2应该指向倒数第n个节点。

 

typedef struct list

{

    int key;

    struct list *next;

};

list *find(list *head,int n)

{

     list *p1,*p2;

     p1=head;

     p2=NULL;//可能没有n个   

  &

分类:数据结构 | 评论:0 | 浏览:19 | 收藏 | 查看全文>>

编译时多态和运行时多态

。。。

分类:待完成 | 评论:0 | 浏览:1 | 收藏 | 查看全文>>
共6页/56条记录 首页 上一页 1 2 3 4 5 下一页 尾页 返回顶部
最新评论
最近访客
友情博客
关注更新
你关注的用户没有更新博文!
友情链接