专注于c++

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  21 Posts :: 0 Stories :: 4 Comments :: 0 Trackbacks

常用链接

留言簿(15)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

1、数组与指针

假如int a[3][4];

a[i][j] == *(a[i]+j) == *(*(a+i)+j)

数组名就是数组内存的首地址

1、 函数的指针

一个函数被编译和连接后,要占用一定的内存区,它的首地址就是该函数的指针,函数的指针也是该函数的入口地址。

假设p=max()函数。p是函数指针,且max有返回值,则下列

c=max(a,b);

c=(*p)(a,b)

c=p(a,b)

都是等价的,对p不能做增减运算

2、 内联函数

*不能有多分支语句和循环语句,否则作普通函数

*不能是递归子函数

*所含语句行数应该为1~5

4、带缺省参数的函数

从友到左被定义,右边不能含有缺省参数

5 void Sort(int *&val)   val是个int*型的引用型变量

6Q: 带符号数赋予不带符号数的变量

   A: short x=-35;

      unsigned short y;

      y=x;

  

   x=-35=1000 0000 0010 0011

   x=    1111 1111 1101 1101

   将它看作不带符号的二进制数

所以 y=x=1111 1111 1101 1101=65501

 

 Q:无符号数赋予有符号数

     unsigned short x=65530;

     short y;

     y=x;

 A: x=65530=1111 1111 1111 1010

      y=x;

所以y=1000 0000 0000 0110

所以y= -000 0000 0000 0110=-6

 

7int a=b=6;是不允许的,但是int a,b=a=6;却是可以的。

8+++等的优先级

优先级     高——>

+,-,++,--     *,/,%        +,-        <<,>>

__同级_     __同级_   __同级_    __同级_

 

Q -a++ 由于++,-同级,所欲按结合性从右向左,故等价于 –(a++)

-++a EQU -(++a)

但是 ++(-a)是个错误的表达式,因为-a不是变量,而是表达式,不能对表达式进行自增。(-a)++同理也是错误的。

a+++b 未定义。不该使用。

a+--b EQU a+(--b)

 

9Q:指向不同类型指针

int *p;

float f;

p=&f; //ERROR,p指向的类型是int,类型不匹配

10、假设p=&a

*p EQU *(&a)   EQU     *&a   EQU   a

&a EQU &(*a) EQU   &*p EQU p

 

11、       y=*p++ 等价于 y=*(p++) 注: y的值等于*p的值,p的新值等于(p原值+1) X 相应数据类型长度。

y=*++p 等价于 y=*(++p) 注: y的值为(p+1)X数据类型长度。

y=(*p)++   y值等于*p*p的值为*p + 1

y=++(*p)   y的值等于(*p)+1 *p新值等于 (*p)+1
12、%取余运算。
(-3)%2   EQU  -(3%2)=-1
5%-1      EQU   5%3=2
19%10%5 EQU (19%10)%5=4

posted on 2009-09-30 16:21 bellgrade 阅读(301) 评论(0)  编辑 收藏 引用 所属分类: C/C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理