技术心得地

把所有简单的事办好即为不简单

C++博客 首页 新随笔 联系 聚合 管理
  17 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks
1. 内存和指针

边界对齐 :整型值存储的起始位置只能是某些特定的字节,通常是 2 的倍数
变量名字和内存位置之间的关联并不是硬件所提供的,它是由编译器实现的
硬件通过地址访问内存位置

2. 值和类型

不能简单的通过检查一个值的位来判断它的类型,而是值的使用方式

3. 指针

NULL指针

char ch = 'a';
char *cp = &ch;
*cp + 1 : b
*(cp +1) : a 的相邻内存单元的值
   cp++ : a 的相邻内存单元的地址
  ++cp : a 的地址

*++cp : a 的相邻内存单元的值
*cp++ : a (产生cp的拷贝;cp增加;通过cp拷贝执行间接访问)

++*cp : b, ch = 'a';
(*cp)++ : a, ch = 'b';

++*++cp : a 的相邻内存单元的值+1
++*cp++ : b

实例
int
strlen( 
char *string )
{
    
int    length = 0;
    
while*string++ != '\0' )
        length 
+= 1;
    
return length;
}

int
find_char(  
char **strings, char value)
{
    
char *string;
    
while( ( string = *strings++ ) != NULL )
    {
        
while*string != '\0' )
        {
            
if*string++ == value )
            {
                
return 1;
            }
        }
    }
    
return 0;
}

posted on 2009-12-19 23:49 海涛 阅读(125) 评论(0)  编辑 收藏 引用 所属分类: POINTERS ON C

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