因为课堂上没听懂,又看不懂教科书(《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. Redis结合EntityFramework结合使用的操作类

    最近一段时间在研究redis.  各种不懂, 各种问题.也看了N多的资料. 最终参照着  张占岭 的博客  http://www.cnblogs.com/lori/p/3435483.html   写 ...

  2. 简单的闭包运算(Closure)演示程序

    /* * 该程序用于计算某个产生式的闭包 * RexfieldVon * 2013年8月9日16:01:38 */ #include <stdio.h> #include <stdl ...

  3. poj 1161 最短路构图

    题目链接:http://poj.org/problem?id=1161 #include <cstdio> #include <cmath> #include <algo ...

  4. ASIHttpRequest或者SDWebImage给UIImageView加载图片的逻辑是什么样子的

    非常非常喜欢SDWebImage,就算后来AF也做了图片缓存,我也还是一直使用.图片缓存真的是一件令人头疼的事,但是SDWebImage封装了一切,你所需要的只是简单的set一个URL:1.设置一个展 ...

  5. apache POI 导出excel相关方法

    apache POI 操作excel无比强大.同时有操作word和ppt的接口. 下面讲解poi中常用方法. 1,设置列宽 HSSFSheet sheet = wb.getSheetAt(0); sh ...

  6. 你应该知道的8个Java牛人

    简单介绍一下8个Java牛人,他们为Java社区,创建了框架(framework),产品或者是写书,影响甚至改变了Java开发的方法 8.Tomcat创始人 James Duncan Davidson ...

  7. 关于STM32 RTC的使用

    直接上代码,很爽. 1.RTC的首次初始化问题 使能时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE) ...

  8. 细说Lucene源码(一):索引文件锁机制

    大家都知道,在多线程或多进程的环境中,对统一资源的访问需要特别小心,特别是在写资源时,如果不加锁,将会导致很多严重的后果,Lucene的索引也是如此,lucene对索引的读写分为IndexReader ...

  9. 多线程下的NSOperation和NSOperationQueue的使用

    多线程下的NSOperation和NSOperationQueue的使用 NSOperation和NSOperationQueue的介绍: NSOperation是Cocoa中的一个抽象类,用来封装单 ...

  10. Servlet与JSP的关系

    Servlet与JSP的异同点: 相似点: 都可以生成动态网页 不同点: JSP擅长网页制作,生成页面直观,但不易追踪与排错 Servlet是纯Java,擅长处理流程与业务逻辑,缺点是页面不直观