一、指针数组与指针数组

  1,指针数组

  顾名思义,即一个元素全部是指针的数组,其形式与普通数组相似,形式如 *a[N]。

在理解指针数组的使用方式前,我先来说下我个人对数组的理解。

  比如一维整形数组(形如int a[3]),其实是一个具有3个整形元素的变量;二维整形数组(形如int a[4][3]),可将其视为有a[4]和int[3]两部分构成,将a[4]视为一个一维数组,其中包含a[0]、a[1]、a[2]、a[3],每个元素都是int[3]类型,比如a[0]包含a[0][0],a[0][1],a[0][2]三个元素;三维数组以此类推...

  指针数组的元素既然是指针,那么就可以将它的每一个元素指向相同类型的其他元素(比如指向数组)。

  下面举个例子说明指针数组的使用方法  

 1 #include<stdio.h>
2 #include<stdlib.h>
3
4 #define M 4
5 #define N 3
6
7 void main()
8 {
9 int *a[M],b[M][N]; //分别定义指针数组与二维数组
10 int i,j;
11
12 for(i=0;i<M;i++) //为数组赋值
13 {
14 for(j=0;j<N;j++)
15 {
16 b[i][j] = i+j;
17 }
18 }
19
20 for(i=0;i<M;i++) //为指针数组赋值,将其元素指向二维数组的第一维的元素
21 {
22 a[i]=b[i];
23 }
24
25 for(i=0;i<M;i++) //打印出数组
26 {
27 for(j=0;j<N;j++)
28 {
29 printf("%4d",a[i][j]); //a[i][j]可以写成*(a[i]+j)等其他合理的形式
30 }
31 printf("\n");
32 }
33
34
35 getchar();
36 }

  2,数组指针

  数组指针是一个指向数组的指针,形式为  (*a)[N],既可以指向一维数组,也可以指向二维数组。当执行a+1操作时,它会跨过N个单位长度。

下面举例子说明

 1 #include<stdio.h>
2 #include<stdlib.h>
3 #define M 4
4 #define N 3
5
6
7 void main()
8 {
9 int (*a)[N],b[M][N];
10 int i,j;
11
12 for(i=0;i<M;i++)
13 {
14 for(j=0;j<N;j++)
15 {
16 b[i][j]=i+j;
17 }
18 }
19
20
21 printf("利用b[i][j]方式打印数组\n");
22 for(i=0;i<M;i++)
23 {
24 for(j=0;j<N;j++)
25 {
26 printf("%4d",b[i][j]);
27 }
28 printf("\n");
29 }
30
31 a=&b[0];//或者a=b,但前者可能更为准确
32
33 printf("利用a[i][j]方式打印数组\n");
34 for(i=0;i<M;i++)
35 {
36 for(j=0;j<N;j++)
37 {
38 printf("%4d",a[i][j]);
39 }
40 printf("\n");
41 }
42
43 getchar();
44 }

关于C语言的指针数组与指针数组的个人理解的更多相关文章

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

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

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

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

  3. Swift中对C语言接口缓存的使用以及数组、字符串转为指针类型的方法

    由于Swift编程语言属于上层编程语言,而Swift中由于为了低层的高性能计算接口,所以往往需要C语言中的指针类型,由此,在Swift编程语言刚诞生的时候就有了UnsafePointer与Unsafe ...

  4. C#委托与C语言函数指针及函数指针数组

    C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...

  5. 关于c语言二维数组与指针的个人理解及处理办法。

    相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题 ...

  6. 深入理解C语言中的指针与数组之指针篇

    转载于http://blog.csdn.net/hinyunsin/article/details/6662851     前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本 ...

  7. C语言学习笔记之成员数组和指针

    成员数组和指针是我们c语言中一个非常重要的知识点,记得以前在大学时老师一直要我们做这类的练习了,但是最的还是忘记了,今天来恶补一下.     单看这文章的标题,你可能会觉得好像没什么意思.你先别下这个 ...

  8. 深入理解C语言中的指针与数组之指针篇(转载)

    前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本所在.相信,任意一家公司如果想要考察一个人对C语言的理解,指针和数组绝对是必考的一部分. 但是之前一方面之前一直在忙各种事情 ...

  9. C语言数组和指针的理解_在取地址运算上的操作_指针加减操作_a 和&a 的区别

    1.一个实例+理论分析 在了解数组和指针的访问方式前提下,下面再看这个例子: main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); pr ...

  10. C语言函数指针变量和指针函数以及指针数组

    C语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址.我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数.然后通过指针变量就可以找到并调用这 ...

随机推荐

  1. Leedcode算法专题训练(字符串)

    4. 两个字符串包含的字符是否完全相同 242. Valid Anagram (Easy) Leetcode / 力扣 可以用 HashMap 来映射字符与出现次数,然后比较两个字符串出现的字符数量是 ...

  2. 如何保证Redis的高并发和高可用?

    就是如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 redis高并发:主从 ...

  3. Spring Boot demo系列(六):HTTPS

    2021.2.24 更新 1 概述 本文演示了如何给Spring Boot应用加上HTTPS的过程. 2 证书 虽然证书能自己生成,使用JDK自带的keytool即可,但是生产环境是不可能使用自己生成 ...

  4. 案例分析——Who is the king of handwriting notes?

    案例分析--Who is the king of handwriting notes? 项目 内容 这个作业属于那个课程 2021春季学期软件工程(罗杰.任健) 这个作业的要求在哪里 案例分析 我在这 ...

  5. 1036 Boys vs Girls

    This time you are asked to tell the difference between the lowest grade of all the male students and ...

  6. Relatives(容斥)

    Relatives Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15708   Accepted: 7966 Descri ...

  7. Spring Boot的自动配置原理及启动流程源码分析

    概述 Spring Boot 应用目前应该是 Java 中用得最多的框架了吧.其中 Spring Boot 最具特点之一就是自动配置,基于Spring Boot 的自动配置,我们可以很快集成某个模块, ...

  8. pyqt5 菜单栏+信息提示框

    前言 使用pyqt5 添加菜单栏 单击菜单栏 弹出信息框(MessageBox用法) 菜单栏 功能 Action是Qt中单独引入的一个对象,对应QAction类.Action表示一个独立的操作,是将界 ...

  9. 书评第001篇:《C++黑客编程揭秘与防范》

    本书基本信息 作者:冀云(编著) 出版社:人民邮电出版社 出版时间:2012-6-1 ISBN:9787115280640 版次:1 页数:265 字数:406000 印刷时间:2012-6-1 开本 ...

  10. hdu3746 KMP的next数组应用,求项链首尾项链循环

    题意:       给你一个项链,问你最少加多少个珠子能满足整个项链是一个循环的项链(首尾相连) 思路:      KMP的简单应用只要了解next数组的意义就好说了,下面总结下  next在循环方面 ...