(C初学) 对数组与指针的一些浅显的理解
因为课堂上没听懂,又看不懂教科书(《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初学) 对数组与指针的一些浅显的理解的更多相关文章
- 把《c++ primer》读薄(4-2 c和c++的数组 和 指针初探)
督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1.我们知道,将一个数组赋给另一个数组,就是将一个数组的元素逐个赋值给另一数组的对应元素,相应的,将一个vector 赋给另 ...
- C语言核心之数组和指针详解
指针 相信大家对下面的代码不陌生: int i=2; int *p; p=&i;这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而 ...
- 《征服 C 指针》摘录3:数组 与 指针
一.数组 和 指针 的微妙关系 数组 是指将固定个数.相同类型的变量排列起来的对象. 正如之前说明的那样,给指针加 N,指针前进“当前指针指向的变量类型的长度 X N”. 因此,给指向数组的某个元素的 ...
- C指针-数组和指针的归一
int bArr[] = {1,2,3}; int *iarr = bArr; *iarr = 6; printf("%d\n",*iarr); printf("%d\n ...
- 《C专家编程》第四章——令人震惊的事实:数组和指针并不相同
数组和指针是C语言里相当重要的两部分内容,也是新手程序员最容易搞混的两个地方,本章我们锁定指针与数组,探讨它们的异同点. 首先来看指针与数组在声明上的区别: int a[10]; int *p; 很明 ...
- (C语言)数组与指针的区别
以前常常听过这种说法,说数组和指针这两者比较像,但是不能混淆,可是一直没能理解.刚刚在李云的<专业嵌入式软件开发>中,看了讲述数组与指针区别的一章,似乎有所领悟.本着知乎上看到的这张图,我 ...
- C语言教学--二维数组和指针的理解
对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...
- 【C语言学习】《C Primer Plus》第10章 数组和指针
学习总结 1.数组初始化方式: int a[]={1,2,3} int a[SIZE]={1,2,3} //SIZE是宏定义,数组初始化个数不能大于SIZE,否则报错:当个数小 //SIZE,自动补0 ...
- C语言学习004:数组与指针
在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的
随机推荐
- 2012 A 《中国近现代史纲要》课程期末考试试卷
湖南人文科技学院2012—2013学年第1学期公共课 2011级<中国近现代史纲要>课程期末考试试卷 考核方式:(开卷) ...
- 配置Chrome启动参数支持本地AJAX请求,解决XMLHttpRequest cannot load file..,Uncaught NetworkError: Failed to execute 'send' on 'XMLHttpRequest':.. 问题
直接将本地的HTML文件拖拽到Chrome浏览器中运行时,发送的AJAX请求本地文件,会报跨域错误: 报错的原因是:Chrome默认不支持本地的AJAX请求! 解决问题的办法是:给Chrome浏览器添 ...
- 简单的FIRST集演示程序
/* * 该程序用于计算某个非终结符的 FIRST 集合 * RexfieldVon * 2013年6月29日19:53:45 * 2013年7月3日22:01:57 修改 GetFIRST 例程以简 ...
- Selenium终极自动化测试环境搭建(一) Selenium+Eclipse+Junit+TestNG
Selenium终极自动化测试环境搭建(一)Selenium+Eclipse+Junit+TestNG 第一步 安装JDK JDk1.7. 下载地址:http://www.oracle.com/tec ...
- MVC4中EasyUI Tree异步加载JSON数据生成树
1,首先构造tree接受的格式化数据结构MODEL /// <summary> /// 定义EasyUI树的相关数据,方便控制器生成Json数据进行传递 /// </summar ...
- 跨平台通信中间件thrift学习【Java版本】(转)
转自:http://neoremind.com/2012/03/%E8%B7%A8%E5%B9%B3%E5%8F%B0%E9%80%9A%E4%BF%A1%E4%B8%AD%E9%97%B4%E4%B ...
- java參数传递机制浅析
欢迎转载,转载请声明出处! ----------------------------------------- 前言: java语言中,參数的传递仅仅有一种机制.那就是值传递. 举例: 以下将通过几个 ...
- 实战:sqlserver 数据实时同步到mysql
1.安装安装mysqlconnector 2.配置mysqlconnector ODBC数据管理器->系统DSN->加入->mysql ODBC 5.3 ANSI driver-&g ...
- 会用errno,事半功倍
参考一 参考二 参考三 参考四 一. errno二. 把errno的数字转换成相应的文字说明1. 使用strerror函数2. 使用perror函数三. errno的线程/进程安全性附录 一. err ...
- iOS应用内支付(内购)的个人开发过程及坑!
本文会给大家详细介绍iOS内购,这是本人16年5月底的开发过程,希望对看完此篇文章的人有所帮助. 本文基于XcodeVersion 7.3 (7D175)版本,手机是iPhone 6,9.3系统. 部 ...