技术心得地

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

C++博客 首页 新随笔 联系 聚合 管理
  17 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks
1. 一维数组

数组名的值是一个指针常量
只有当数组名在表达式中使用时,编译器才会为它产生一个指针常量

int array[9];
sizeof(array) : 数组 a 的大小9,不是指针的长度
&array         : 指向数组的指针,不是某个整型数的指针
6[array]     : 与array[6]相等;*(6+array)

2. 字符串复制

void
strcpy(
char *buffer, char const *string)
{
    
while( (*buffer++ = *string++!= '\0')
        ;
}

3. 数组和指针

int strlen( char *string );
int strlen( char string[] );

4. 初始化

静态数组自动初始化
初始化用 {}
字符数组初始化
char message[] = { 'H', 'e', 'l', 'l', 'o', 0};
char message[] = "Hello";

5. 多维数组

下标引用只是间接访问表达式的一种伪装形式
int matrix[3][10];
int (*p)[10] = matrix;
matrix[1][5] = *( *( matrix +1 ) +5 )

matrix是一个指向数组的指针

6. 指针数组

int *api[10];
char const *keyword[] = {"do", "for", "return", NULL};
sizeof(keyword) / sizeof(keyword[0])  : 元素个数

#include <string.h>

int
lookup_keyword( 
char const * const desired_word, char const *keyword_table[], int const size )
{
     
char const **kwp;
     
for( kwp = keyword_table; kwp < keyword_table+size; kwp++)
         
if(strcmp(desired_word, *kwp) == 0)
             
return kwp - keyword_table;
     retrun 
-1;
}

改进:for( kwp = keyword_table; *kwp != NULL; kwp++)

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

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