因为课堂上没听懂,又看不懂教科书(《C语言程序设计教程》第3版 谭浩强,张基温编著)上晦涩的表达方式,昨天晚上特意拿《C语言入门经典》这本书自己研究了一晚的数组与指针。

  先来一个简单的程序:

 #include<stdio.h>

 int main()
{
  char board[][]={
            {'','',''},
            {'','',''},
            {'','',''}
            };
     printf("value of board[0][0] : %c\n", board[][]);   printf("value of *board[0] : %c\n", *board[]);
  printf("value of **board : %c\n", **board);      return ; }

  

 输出如下:

   value of board[][] : 

   value of *board[]   : 

   value of **board     : 

   board[][]

  在二维数组board[3][3]中:

  board        相当于一个指针(*board/board[0])的指针,指向第0个子数组的第0个元素,即二维数组board[3][3]的首个元素。即,board表示的是二维数组里的第0个子数组的地址。
  *board      使用取消引用运算符*,取消对board这一指针的引用,得到board所指的值。*board相当于一个指针,指向第0个子数组里的元素。 *board 等同于 board[0] (*board == board[0] ),即二维数组里的第0个子数组中第0个元素的地址。
  **board     再次使用取消运算符*,取消对*board这一指针的引用,得到*board所指的值。即,**board是第0个子数组中第0个元素的值。

  board[0]    相当于一个指针,指向第0个子数组里第0个元素,即二维数组board[3][3]的首个子数组的首个元素。即,board[0]是第0个子数组里第0个元素的地址。
  *board[0]  使用取消运算符*,取消对board[0]这一指针的引用,得到board[0]所指的值。即,*board[0]是第0个子数组里第0个元素的值。

  board[0][0]相当于一个变量名称。

  *board[0]与**board是对 数组 相当于 指针的应用。

  

  这就是我昨天晚上自学的收获与体会了。

  这是我第一次在博客园发随笔,而且不确定我的总结有没有错误,或者有更简洁、更透彻的理解,恳请各位志同道合的同学、各位大牛批评指教。谢谢大家~

(C初学) 对数组与指针的一些浅显的理解的更多相关文章

  1. 把《c++ primer》读薄(4-2 c和c++的数组 和 指针初探)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1.我们知道,将一个数组赋给另一个数组,就是将一个数组的元素逐个赋值给另一数组的对应元素,相应的,将一个vector 赋给另 ...

  2. C语言核心之数组和指针详解

    指针 相信大家对下面的代码不陌生: int i=2; int *p; p=&i;这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而 ...

  3. 《征服 C 指针》摘录3:数组 与 指针

    一.数组 和 指针 的微妙关系 数组 是指将固定个数.相同类型的变量排列起来的对象. 正如之前说明的那样,给指针加 N,指针前进“当前指针指向的变量类型的长度 X N”. 因此,给指向数组的某个元素的 ...

  4. C指针-数组和指针的归一

    int bArr[] = {1,2,3}; int *iarr = bArr; *iarr = 6; printf("%d\n",*iarr); printf("%d\n ...

  5. 《C专家编程》第四章——令人震惊的事实:数组和指针并不相同

    数组和指针是C语言里相当重要的两部分内容,也是新手程序员最容易搞混的两个地方,本章我们锁定指针与数组,探讨它们的异同点. 首先来看指针与数组在声明上的区别: int a[10]; int *p; 很明 ...

  6. (C语言)数组与指针的区别

    以前常常听过这种说法,说数组和指针这两者比较像,但是不能混淆,可是一直没能理解.刚刚在李云的<专业嵌入式软件开发>中,看了讲述数组与指针区别的一章,似乎有所领悟.本着知乎上看到的这张图,我 ...

  7. C语言教学--二维数组和指针的理解

    对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...

  8. 【C语言学习】《C Primer Plus》第10章 数组和指针

    学习总结 1.数组初始化方式: int a[]={1,2,3} int a[SIZE]={1,2,3} //SIZE是宏定义,数组初始化个数不能大于SIZE,否则报错:当个数小 //SIZE,自动补0 ...

  9. C语言学习004:数组与指针

    在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的

随机推荐

  1. [Locked] Missing Ranges

    Missing Ranges Given a sorted integer array where the range of elements are [lower, upper] inclusive ...

  2. AGG 之贝塞尔插值

    原文: http://liyiwen.iteye.com/blog/705489 之前 comp.graphic.algorithms 上有一个讨论,是关于怎么样使用曲线对多边形进行插值处理,使得最终 ...

  3. 怎样把redis编译为库,挪为己用?

    其实这是个伪命题.因为只要正常编译redis,那么在 /deps/hiredis/ 目录下就会生成动态库文件 libhiredis.so. 为了便于学习redis源码,编写一些测试程序,并进行单步跟踪 ...

  4. angularJS constant和value

    angularJS可以通过constant(name,value)和value(name,value)对于创建服务也是很重要的. 相同点是:都可以接受两个参数,name和value. 区别: 1.co ...

  5. 获取contenteditable的内容 对html进行处理 兼容 chrome、IE、Firefox

    var html = $(this).html();if(html){ var lineSign = html.indexOf('<div>'); if(html.indexOf('< ...

  6. Linux一键安装PHP/JAVA环境OneinStack

    OneinStack 是一款PHP/JAVA环境一键配置工具.                         OneinStack包含以下组合   lnmp(Linux + Nginx+ MySQL ...

  7. adb logcat命令查看并过滤android输出log

    cmd命令行中使用adb logcat命令查看android系统和应用的log,dos窗口按ctrl+c中断输出log记录. logcat日志中的优先级/tag标记: android输出的每一条日志都 ...

  8. php字符编码转utf-8格式

    <? function is_utf8($other) { if (preg_match("/^([".chr(228)."-".chr(233).&qu ...

  9. 三星 note3销售地查询、销售地代码

    查看销售地代码 用KIES验销售地:记下设定-关于-状态里的序号. 手机不要连接电脑,注意是不要连接,打开KIES3,点工具——固件恢复和初始化,输入大写的型号SM-N900或者SM-N9005,确认 ...

  10. [疑惑与解答] WxPython In Action -1

    在学<活学活用wxPython>第三章的时候,我遇到一点疑惑,那就是下面语句的区别是什么 例 3.1 第4,5行: panel = wx.Panel(self, -1) button = ...