前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于int *a[常量]与int (*a)[常量]的分析与区分(详解)

关于int *a[常量]与int (*a)[常量]的分析与区分(详解)

作者头像
Angel_Kitty
发布于 2018-04-08 09:09:34
发布于 2018-04-08 09:09:34
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

前言:

小伙伴私信我说,int *a[常量]与int (*a)[常量]这个区分不开,C指针,确实是C中最难的部分,也是学C++,JAVA,包括你以后上岗用的非常频繁的东西,在这里我就简单论述一下吧,具体关于指针的讲解见详文http://www.cnblogs.com/ECJTUACM-873284962/p/6682949.html

正文:

1.int *a[常量] 定义一个数组,该数组的每个成员都是int* 指针 2.int (*a)[常量] 定义一个指针, 该指针指向一个int数组!
令常量为n
对于int *型的指针,应该很好理解吧,相当于数组a可以装载n个int类型的指针。
而int (*a)[n]  数组的指针表示指针a指向数组int [n];
如果你还是感觉到有些疑惑的话,看下一下代码,先分析结果,再将代码粘贴后运行,看看效果,估计就没有什么太大的问题了!
下面给出样例代码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 #include <stdio.h>
 2 int main()
 3 {
 4     static int m[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};/* 定义二维数组m并初始化*/
 5     int (*p)[4];//数组指针 p是指针,指向一维数组,每个一维数组有4个int元素
 6     int i,j; int *q[3];//指针数组 q是数组,数组元素是指针,3个int指针
 7     p=m; //p是指针,可以直接指向二维数组
 8     printf("数组指针输出元素\n");
 9     for(i=0;i<3;i++)/*输出二维数组中各个元素的数值*/
10     {
11         for(j=0;j<4;j++)
12         {
13             printf("%3d ",*(*(p+i)+j));
14         }
15         printf("\n");
16     }
17     printf("\n");
18     for(i=0;i<3;i++,p++)//p可看成是行指针
19     {
20         printf("%3d ",**p);//每一行的第一个元素
21         printf("%3d ",*(*p+1));//每一行的第二个元素
22         printf("%3d ",*(*p+2));//每一行的第三个元素
23         printf("%3d ",*(*p+3));//每一行的第四个元素
24         printf("\n");
25     }
26     printf("\n");
27     printf("指针数组输出元素\n");
28     for(i=0;i<3;i++)
29         q[i]=m[i];//q是数组,元素q[i]是指针
30     for(i=0;i<3;i++)
31     {
32         for(j=0;j<4;j++)
33         {
34             printf("%3d ",q[i][j]);//q[i][j]可换成*(q[i]+j)
35         }
36         printf("\n");
37     }
38     printf("\n");
39     q[0]=m[0];
40     for(i=0;i<3;i++)
41     {
42         for(j=0;j<4;j++)
43         {
44             printf("%3d ",*(q[0]+j+4*i));
45         }
46         printf("\n");
47     }
48     printf("\n");
49 }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-04-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
指针详解(3)
在使用上,由于pstr存放的是字符串第一个字符的地址所以 对pstr解引用就可以打印第一个字符,打印整个操作符只需提供首元素的地址,使用%s就可以打印出来。
技匠晓晨
2024/11/26
830
指针详解(3)
【C语言】带你手把手拿捏指针(3)(含转移表)
   在指针的类型中我们知道有⼀种指针类型为字符指针 char* ,⼀般使⽤的方式如下:
TANGLONG
2024/10/15
1060
【C语言】带你手把手拿捏指针(3)(含转移表)
C语言重点突破(2)指针(二)
在我的前一章节,我们提到指针也有类型的区分,有整型指针,浮点型指针,下面我们讲讲字符指针
对编程一片赤诚的小吴
2024/01/23
1320
C语言重点突破(2)指针(二)
带你深层了解c语言指针
arr1数组,arr2数组,arr3数组在内存中都有自己独立的内存空间, 我们将这三个一维数组的首元素地址放在一个新的指针的数组(arr)中,通过指针数组来访问这三个一维数组,效果就如同二维数组一样,但并不是真正的二维数组. 图解:
初阶牛
2023/02/27
2930
带你深层了解c语言指针
指针详解(二级指针、指针数组和数组指针、字符指针、二维数组传参、函数指针变量)(二)
走在努力路上的自己
2024/01/26
6280
指针详解(二级指针、指针数组和数组指针、字符指针、二维数组传参、函数指针变量)(二)
拿捏指针(二)
前面我们已经讲了,C语言的第一篇《拿捏指针(一)》,接下里我们继续深入的来了解指针。
秋邱
2024/10/09
760
拿捏指针(二)
【C语言】进阶指针
例如下面代码,pc就是一个字符指针;"abcdef"是一个常量字符串,不能被修改,pb里面存的是该常量字符串的首字符’ a '的地址。
YoungMLet
2024/03/01
950
指针进阶(1)
代码 const char* p = “abcdef”; 并不是把字符串 abcdef 放到字符指针 p 里去,而是把字符串 abcdef 首字符的地址放到 p 中去;同时,因为 abcdef 是一个常量字符串,所以要用 const 进行修饰,以保证 p 中的内容不会被修改。
waves浪游
2024/01/22
1310
指针进阶(1)
【C语言期末不挂科——指针进阶篇】【上】
  指针的类型里面我们知道有一种指针 类型为 字符指针(char *),经过初阶的学习我们已经能用:
用户11029129
2024/06/04
840
【C语言期末不挂科——指针进阶篇】【上】
拿下大怪兽——指针
parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型一维数组,parr[i][j]就是整型一维数组中的元素。
用户11328191
2024/10/23
870
拿下大怪兽——指针
C语言进阶-高阶指针
目录 前言 字符指针 指针数组 数组指针 &数组名VS数组名 数组指针的使用 数组参数、指针参数 一维数组传参 二维数组传参 一级指针传参 二级指针传参 函数指针 函数指针数组 指向函数指针数组的指针 ---- 前言 对于初阶指针内容在我的另一篇文章中已经写到(有想法的可以去看看) 附上链接:C语言初阶指针 回顾: 1. 指针是地址,指针变量是用来存放地址的变量(唯一标识一块内存空间)  2. 指针的大小是固定的4/8个字节(32位平台/64位平台)  3. 指针的类型决定了指针的+-整数的步长,指
用户9645905
2022/11/30
4080
C语言进阶-高阶指针
C语言----深入理解指针(3)
char* p = "abcdef";//这里的赋值是讲字符串中首字符的地址存在p中
凯子坚持C
2024/09/23
990
C语言指针深度解剖
指针是C语言的灵魂,深入理解指针,是学好学会C语言的重要前提。因此,本文将重点讲解C语言指针的深度内容。
二肥是只大懒蓝猫
2023/03/30
4870
C语言指针深度解剖
C语言 —— 此去经年梦浪荡魂音 - 深入理解指针(卷三)
迷迭所归处
2025/03/20
700
C语言 —— 此去经年梦浪荡魂音 - 深入理解指针(卷三)
关于指针数组与数组指针详解(知识点全面)
它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身的大小决定,每个元素都是一个指针。
利刃大大
2023/04/12
3400
关于指针数组与数组指针详解(知识点全面)
【C语言】指针进阶:字符指针&&数组指针&&函数指针
✨作者:@平凡的人1 ✨专栏:《C语言从0到1》 ✨一句话:凡是过往,皆为序章 ✨说明: 过去无可挽回, 未来可以改变 ---- 🌹感谢您的点赞与关注,同时欢迎各位有空来访我的🍁平凡舍 ---- 文章目录 @[toc] 🚀前言 🚀字符指针 🚀指针数组 🚀数组指针 🍁&数组名 与 数组名 🍁数组指针的使用 🚀数组传参、指针参数 🍁一维数组传参 🍁二维数组传参 🍁一级指针传参 🍁二级指针传参 🚀函数指针 🚀结语 🚀前言 回想之前,我们学了指针的一些基础👉 指针与结构体 我们知道了指针的概念
平凡的人1
2022/11/15
3.1K0
【C语言】指针进阶:字符指针&&数组指针&&函数指针
指针进阶详解
理论上字符串第一个字符被改为w,实际上代码无法正常运行,直接挂掉。所以避免被修改,我们const修饰字符指针,避免其被改。
用户10517932
2023/10/07
2150
指针进阶详解
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
(2)在定义指针变量时,指针变量名前的*表示现定义的是一个指针类型的变量。星号并不是指针变量名的一部分,只是一个标志
小徐在进步
2024/10/04
2020
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
C语言之指针详解(3)
上述的代码const char* pstr = "hello bit.";特别容易让大家以为是把字符串hello bit.放到字符指针pstr里了,但是本质是把字符串hello bit.首字符的地址放到了pstr中。所以说,上面的代码是把常量字符串的首字符h的地址放到指针变量pstr中。
Crossoads
2024/10/21
770
C语言之指针详解(3)
抽丝剥茧C语言(高阶)指针的进阶
数组指针是指针?还是数组? 答案是:指针。 我们已经熟悉: 整形指针: int * pint; 能够指向整形数据的指针。 浮点型指针: float * pf; 能够指向浮点型数据的指针。 那数组指针应该是:能够指向数组的指针。 下面代码哪个是数组指针?
有礼貌的灰绅士
2023/03/28
4250
抽丝剥茧C语言(高阶)指针的进阶
相关推荐
指针详解(3)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验