注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

C语言学习:数组和指针  

2013-03-04 16:17:12|  分类: C语言 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  
        今天学习了指针章节的数组部分,一开始觉得指针和组数组没啥必然的联系,
通过书中的例子,了解了一些,通过例子学习:

一  例一:一维数组测试: array_point.c
 #include <stdio.h>

int main(void)
{
  long mult[]={15L,25L,35L,45L};
  long *p=mult;
  int i=0;


 /* 查看数组 mult 的值和地址 */
  printf("\nmult= %ld", *mult );
  printf("\nmult= %d", mult );

 /* 列出数组元素值 */
 for ( i=0;i<4;i++)
  {
   printf("\nmult[%d]=%d", i, mult[i] );
   printf("\naddress p+%d (&muti[%d]): %d ", i,i,p+i);
  }

   printf("\n");
   return 0;
}
   

--1.1 编译执行
 [pg92@redhatB point]$ gcc -o array_point array_point.c
[pg92@redhatB point]$ ./array_point

mult= 15
mult= -1077617976
mult[0]=15
address p+0 (&muti[0]): -1077617976 
mult[1]=25
address p+1 (&muti[1]): -1077617972 
mult[2]=35
address p+2 (&muti[2]): -1077617968 
mult[3]=45
address p+3 (&muti[3]): -1077617964 
  备注:可见数组 mult 表示第一个数组元素的地址。 *mult 表示第一个数组元素的值。
  

二:例二:二维数组:muti_array.cs
 /*Program:muti_array.c*/

#include <stdio.h>

int main(void)
{
  char board[3][3]={{'1','2','3'},{'4','5','6'},{'7','8','9'}};
  int i=0;

  printf("\n values of board[0][0]: %c",board[0][0]);
  printf("\n values of board[0]: %p",board[0]);
  printf("\n values of *board[0]: %c",*board[0]);
  printf("\n values of *board: %p",*board);
  printf("\n values of **board: %c",**board);
  printf("\n values of *board[0]: %c",*board[0]);
  printf("\n values of *board[1]: %c",*board[1]);
  printf("\n values of *board[2]: %c",*board[2]);

  /*List all elements of the array 注意: *board 为数组的第一个元素的地址,**board 为数组第一个元素的值*/
  for(i=0;i<9;i++)
  {
   printf("\nboard: %p",*board+i);
   printf("\nboard: %c",*(*board+i));
  }
  
   printf("\n");
   return 0;
 }
   
 
--2.1 编译执行
  values of board[0][0]: 1
 values of board[0]: 0xbfa14103
 values of *board[0]: 1
 values of *board: 0xbfa14103
 values of **board: 1
 values of *board[0]: 1
 values of *board[1]: 4
 values of *board[2]: 7
board: 0xbfa14103
board: 1
board: 0xbfa14104
board: 2
board: 0xbfa14105
board: 3
board: 0xbfa14106
board: 4
board: 0xbfa14107
board: 5
board: 0xbfa14108
board: 6
board: 0xbfa14109
board: 7
board: 0xbfa1410a
board: 8
board: 0xbfa1410b
board: 9
   
 备注:这个例子引用的是二维数组并打印一系列的值,用于理解各变量的意义。
 
       board[0][0]:表示直接引用第一个数组的第一个元素值。
       board[0]:    表示二维数组第一个数组的起始地址。
      *board[0]:    指明了第一个数组,但没指明哪个元素,省略元素是指引用第一个元素。
      *board:       表示二维数组第一个数组的第一个元素地址。
      **board:     表示二维数组第一个数组的第一个元素值。
      *board[i]:    表示二唯数组第 i 个数组第一个元素的值。
       board+i:     获得数组所有元素的地址。
      *(*board+i)   获得数组所有元素的值。
      
三 总结
    数组和指针的关系比较复杂,暂时也总结这些,以后再补上。


四 附:访问数组元素的指针表达式

C语言学习:数组和指针 - francs - PostgreSQL DBA
 
 
          
  评论这张
 
阅读(7990)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016