指针和二维数组|学习笔记

简介: 快速学习指针和二维数组

开发者学堂课程【你的第一门 C 语言课指针和二维数组】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/444/detail/5479


指针和二维数组


内容介绍:

一、 二维数组的定义

二、 指针数组和数组指针

三、 数组指针


一、 二维数组的定义

在 c 语言中,并没有真正意义上的二维数组,二维数组只是简单的通过线性方式进行扩展的如下图

图片82.png这个二维数组事实上就是定义4个元素的一维数组,然后每个元素都是包含五个整型变量的一维数组,所以在内存中仍然是有一个线性方式进行存储的

假设定义了二维数组 array[4][5]

图片83.png

Array 二维数组的首地址,在整个数组中,数组名就是第一个元素的指针,也就是地址,由于二维数组实际上是一维数组的扩展,所以 array 可以理解为:指向包围五个元素的数组的指针

证明案例:

#include .h>

int main( )

{

char str[] = "I Love FishC. com!" ;

char *target = str ;

int count =0;

while (*target++ != '\0')

{

count++ ;

}

printf("总共有%d个字符! \n", count);

return 0 ;

}

结论:数组名只是一个地址,而指针是一个左值。 

#include

int main()

{

int array[4][5] = {0};

//打印出整型所占用的空间

printf("sizeof int: %d\n", sizeof(int));

//打印出array的地址(二维数组首地址)

printf("array: 8p\n ,array) ;

//打印array+1的值(地址)

printf( " array+1:%p\n",array +1);

return 0 ;

}

运行:gcc testl.c && ./a. out

结果:

sizeof int: 4

array: 0xbfc34320

array+1:0xbfc34334

结论:两个地址相减就能知道跨度是多少

*(array+1)表示:

  • 指向第二行子数组第一个元素的指针
  • Array+1同样也是指向五个元素数组的地址
  • l *(array+1)=array[1],因为左边是右边的语法谈(添加一个新的功能方便程序

员的使用),使用 array[1]这个会便捷轻松许多

解引用:把一个地址的值取出来 

修改代码:

#include

int main( )

{

//赋不一样的初值

int array[4][5] = {0};

int i,j,k=0;

//双重循环

for(i=0;i<4;i++)

{

for(j=0;j<5;j++)

{

相关文章
|
7月前
|
C语言
C语言---二维数组&&指针
C语言---二维数组&&指针
32 0
|
6月前
指针\动态二维数组空间
指针\动态二维数组空间
33 4
|
2月前
|
存储
如何使用指针数组来实现动态二维数组
指针数组可以用来实现动态二维数组。首先,定义一个指向指针的指针变量,并使用 `malloc` 为它分配内存,然后为每个子数组分配内存。通过这种方式,可以灵活地创建和管理不同大小的二维数组。
|
2月前
|
存储
如何通过指针数组来实现二维数组?
介绍了二维数组和指针数组的概念及其区别,详细讲解了如何使用指针数组模拟二维数组,包括定义与分配内存、访问和赋值元素、以及正确释放内存的步骤,适用于需要动态处理二维数据的场景。
|
3月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
|
3月前
|
存储 Go
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
|
4月前
|
存储 C++
c++学习笔记06 指针
C++指针的详细学习笔记06,涵盖了指针的定义、使用、内存占用、空指针和野指针的概念,以及指针与数组、函数的关系和使用技巧。
35 0
|
7月前
|
存储 人工智能 算法
c++算法学习笔记 (9) 双指针
c++算法学习笔记 (9) 双指针
|
6月前
|
C语言
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
|
6月前
|
C语言
C语言----指针模拟二维数组
C语言----指针模拟二维数组