`

指针基础(一)_c语言学习笔记

 
阅读更多
1. 指针的加减运算
    1)指针相减,表示两指针之间所相差的内存单元数或元素的个数。
    2)指针的乘、除、加的运算均没有意义

2. 指针的关系运算
    1)p1 == p2 : 表示p1和p2指向同一内存单元
    2)p1  >  p2 : 表示p1处于高地址位置

3. 数组和指针
    1)数组的指针,就是数组在内存中的起始地址,即数组变量名。
int a[10], *p;
p = a;		//或 *p = &a[0]
    2)使用数组下标访问数组元素,等价于 使用数组的指针访问数组元素。
    3)p+ia+i 都是数组元素 a[i] 地址。
    4)*(p+i)*(a+i) 就是数组元素 a[i]。
    5)p[i] 等价于 *(p+i),也等价于 a[i]
    6)数组名a是地址常量,不可对其赋值,也不可做 ++ 或 -- 运算。

4. 数组指针 — 指向多位数组的指针
    1)一般指针变量对多维数组的引用:
short int a[2][3] = { {1, 2, 3}, {4, 5, 6} };
short int *p;
p = &a[0][0];	//等价于 p = a[0];
    2)指针p指向二维数组a时,p相当于一个一维数组,访问元素可以用 p[0], .., p[5] 或 *(p+0) .., *(p+5) 来表示。

5. 二维数组中的行地址和列地址
    1)int  a[3] [2],其结构为:
 
    2)a [i](即 *(a+i) ) 既可以看成是一维数组 a 的下标为 i 的元素,又可以看成是由 a [i] [0], a [i] [1] 两个元素组成的一维整型数组的数组名,代表这个一维数组的首地址,即第一个元素 a [i] [0] 的地址(&a[i][0])。
    3)a[i]+j(即 *(a+j)+j) 代表这个数组中下标为 j 的元素的地址,即 &a[i][j]
    4)*(a[i]+j)(即*(*(a+i)+j))代表这个地址所指向的元素的值,即 a[i][j]
    5)以下四种表示元素 a[i][j] 的形式是等价的:
	a[i][j]
	*(a[i]+j)
	*(*(a+1)+j)
	(*(a+i))[j]
     6)如果将 a 看成一个行地址(第0行的地址),则 a+i 代表 a 的第 i 行的地址,a[i] 可看成一个列地址,即第 i 行第0列的地址。
    7)行地址 a 每次加1,表示指向下一行,而列地址 a[i] 每次加一,表示指向下一列。

6. 行指针
  1)以二维数组 a 为例,定义行指针p:
	//定义
	int (*p)[2];	//指定列数为2

	//初始化
	p = a;			//或 p = &a[0];
    2)使用行指针p访问二维数组 a 的元素 a[i][j] 的方法有四种:]
	p[i][j]
	*(p[i]+j)
	*(*(p+1)+j)
	(*(p+i))[j]

7. 列指针
    1)同样以二维数组 a 为例,定义列指针p:
int main ()
{
	int a[3][2] = { {7, 2}, {2, 8}, {5, 9} };

	//定义列指针p
	int *p;

	//初始化
	p = a[0];	//或 p = *a, 或 p = &a[0][0];

	printf("p[3] = %d\n", p[3]);	//输出 p[3] = 8

	return 0;
}
    2)此时,可以将 a 看成一个由(3行x2列)个元素组成的一维数组,然后像访问一维数组一样访问 a。
    3)对于列指针p, p [i] [j] 写法是错误的。

8. 指针数组
    1)当某个数组单元都是指针型数据时,这个数组被称为指针数组。
    2)定义与赋值:
int main ()
{
	char c[3] = { 'a', 'b', 'c' };

	//定义长度为3的指针型数组p
	char *p[3];

	//赋值
	p[0] = &c[0];
	p[1] = &c[1];
	p[2] = &c[2];

	return 0;
}
    2)指针数组和二维数组行指针的区别:
 



分享到:
评论

相关推荐

    c语言指针学习笔记

    C语言中的指针是一种基础而...本文档为C语言指针的学习笔记,从基础到深入逐步介绍了指针的概念、定义、初始化、运算和使用。通过本文档的阅读,学习者应能更好地掌握C语言中的指针知识,并在实际编程中正确使用指针。

    C语言学习笔记.zip

    本压缩包“C语言学习笔记.zip”包含了丰富的C语言学习资料,主要集中在“c-notes-master”这个子目录下,适合初学者和有一定基础的程序员进行深入学习。 在C语言的学习中,首先要掌握的基本概念包括变量、数据类型...

    C语言学习笔记基础完整

    本学习笔记旨在全面覆盖C语言的基础部分,帮助初学者掌握其核心概念和语法。 一、C语言概述 C语言由贝尔实验室的Dennis Ritchie在1972年创造,它的特点是运行效率高,程序控制性强,语法简洁。C语言是许多现代编程...

    C语言学习笔记 C语言学习笔记

    本压缩包包含的“C语言学习笔记”是一份详尽的C语言学习资料,旨在帮助读者深入理解和掌握C语言的基本概念、语法结构以及实际应用技巧。 一、C语言基础 C语言的基础包括变量、数据类型、运算符、流程控制等。变量...

    c语言学习笔记,好东西

    本压缩包包含了一份精心整理的C语言学习笔记,旨在帮助读者深入理解和掌握C语言的核心概念与技术。 笔记首先从基础语法开始,包括变量、数据类型、运算符以及表达式。C语言中的数据类型有基本类型如int、char、...

    C语言100例及教程.rar_C语言 100例_C语言例_c语言 教程

    总的来说,"C语言100例及教程" 是一个全面的C语言学习资源,不仅提供基础理论知识,更强调实践操作,对于想要系统学习和提高C语言技能的人来说,是一份宝贵的资料。通过系统学习和反复实践,学习者可以逐渐掌握C语言...

    C语言指针学习笔记

    C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明...

    C语言学习笔记——基础知识篇

    本资源包"**C语言学习笔记——基础知识篇**"是为C语言初学者或需要复习C语言概念的人准备的宝贵资料。 首先,我们要了解C语言的基础知识。C语言的语法结构基于ALGOL60和BCPL,由Dennis Ritchie在贝尔实验室设计和...

    C语言学习笔记.pdf

    ### C语言学习笔记知识点梳理 #### 一、C语言中的函数 C语言中的函数是程序设计的基本单位之一,主要用于组织代码、实现特定功能并能够被重复调用。 1. **函数分类** - **库函数**:由系统提供的标准函数,如`...

    C语言学习笔记_指针

    ### C语言学习笔记_指针 #### 指针的重要性及基本概念 在C语言中,指针是一种非常重要的数据类型,它不仅丰富了C语言的功能,还是衡量开发者是否熟练掌握C语言的关键指标之一。指针能够让程序员像操作低级语言(如...

    超强的C语言指针学习笔记.pdf

    ### 超强的C语言指针学习笔记 #### 知识点概览 本文将深入探讨C语言中的指针概念及其复杂声明的理解方法——右左法则。文章将分为以下几个部分进行详细介绍: 1. **指针基础知识回顾** 2. **右左法则详解** 3. **...

    C语言和C++Builder学习笔记.rar_C++笔记_c++学习笔记_c/C++_学习笔记_编程语言

    《C语言和C++Builder学习笔记.docx》这份文档可能包含了作者在学习过程中的心得、示例代码和解决问题的经验,对于初学者来说是一份宝贵的资源。通过深入阅读和理解,你将能够更好地掌握C语言和C++Builder的基本原理...

    嵌入式C语言学习笔记

    本文总结了嵌入式C语言学习笔记的要点,涵盖了运算符优先级、指针的用法、二分法查找、字符串操作、冒泡排序法、寻址方式、存储区域、volatile含义及应用等多个方面。 一、运算符优先级 在C语言中,运算符的优先级...

    C语言基础学习笔记

    C语言是一种广泛使用的编程语言,尤其适合底层系统开发...通过逐步学习和实践,你可以掌握C语言的基本要素,从而为进一步深入学习打下坚实的基础。记得在编程过程中多做实验,遇到问题及时纠正,与他人交流,共同进步。

    C语言学习笔记变量数组指针

    在C语言中,变量、数组和指针是编程的基础元素,理解它们的性质和操作方式对于深入学习C语言至关重要。让我们逐一探讨这些知识点。 首先,我们来看“变量”。变量是存储数据的容器,它们可以存储各种类型的数据,如...

    c语言 学习笔记part_1

    吉林大学的讲师精心编写的《C语言学习笔记part_1》旨在为初学者提供一个系统学习C语言的平台,涵盖C语言的基础概念、语法和常见操作,并以直观的图片形式展示示例,使得抽象的编程知识变得生动具体。 首先,C语言的...

    1584007113891_C语言_SuddenlyYou_

    docx格式通常用于存储文字内容,可能是老师的讲义,也可能是学员的学习笔记。 现在,让我们深入探讨一下C语言的一些关键知识点: 1. **基础语法**:C语言的基础包括变量(varibles)、数据类型(如int, float, ...

    C语言学习笔记C语言学习笔记C语言学习笔记

    "C语言学习笔记" 本笔记总结了C语言的基础知识点,包括数据类型、输入输出函数、格式输出函数等。 一、数据类型 C语言的数据类型可以分为四类:基本类型、构造类型、指针类型和空类型。基本类型又可以分为整型、...

Global site tag (gtag.js) - Google Analytics