一、指针数组与指针数组

  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. create-react-app 核心思路分析

    原文链接:http://axuebin.com/articles/fe-solution/cli/cra.html,转载请联系 Create React App is an officially su ...

  2. IDEA使用JFX的相关问题

    1 问题概述 首先是javafx找不到对应的类: 其次是 class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x50f362 ...

  3. 女娲造人引发思考之Java设计模式:工厂模式

    目录 工厂模式的几种形态 简单工厂模式 示例 结构 优缺点 女娲抟土造人 工厂方法模式 结构 女娲举绳造人 抽象工厂模式 结构 女娲造万物 工厂模式的几种形态 工厂模式专门负责将大量有共同接口的类实例 ...

  4. 一个Bug,让我发现了 Java 界的.AJ(锥)!

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 话我放这,踩过的坑越多头发越少! 说来也是奇怪,只要是学编程的,从初次接触的 Jav ...

  5. JAVAEE_03_HTTP

    HTTP\HTTPS\TCP HTTP协议 什么是HTTP协议 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wi ...

  6. Day09_45_Set集合_SortedSet02

    SortedSet * TreeSet是SortedSet接口的实现类,TreeSet底层是一个TreeMap,相当于TreeMap中的key. * SortedSet集合是如何实现自动排序的呢? - ...

  7. 爬虫简介、requests 基础用法、urlretrieve()

    1. 爬虫简介 2. requests 基础用法 3. urlretrieve() 1. 爬虫简介 爬虫的定义 网络爬虫(又被称为网页蜘蛛.网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程 ...

  8. 789. Escape The Ghosts

    You are playing a simplified Pacman game. You start at the point (0, 0), and your destination is (ta ...

  9. shopify 学习链接整理

    shopify shopify packagist https://help.shopify.com/zh-CN/manual/apps/apps-by-shopify/script-editor/s ...

  10. vue.js中使用set方法 this.$set

    vue教程中有这样一个注意事项: 第一种具体情况如下: 运行结果: 当利用索引改变数组某一项时,页面不会刷新.解决方法如下: 运行结果: 三种方式都可以解决,使用Vue.set.vm.$set()或者 ...