精华内容
下载资源
问答
  • 指针一维数组

    2018-04-09 10:38:08
    指针一维数组的讲解,本人觉得挺好的,给大家分享下,适合一些小白
  • 函数指针、函数名、二维数组指针做形参时的要注意的地方
  • 一维数组: 假如有一维数组如下: char a[3]; 该数组有3个元素,数据类型为char型,地址空间如下。 如果想访问数据,直接使用a[0]、a[1]、a[2]取出相应地址空间的值即可 一级指针指针即地址,char *b即...

    一维数组:

    假如有一维数组如下:

    char a[3];

    该数组有3个元素,数据类型为char型,地址空间如下。

    如果想访问数据,直接使用a[0]、a[1]、a[2]取出相应地址空间的值即可

    一级指针:

    指针即地址,char *b即定义一个指向char型数据的指针,int *b即定义一个指向int型数据的指针。

    int a=5;
    int *b=&a;

    例子解析:定义一个int型数据a,值为5,定义一个指向int型的指针b,b的值为a的地址。使用*b就是b指向地址的值。地址空间如下。

    二级指针:

    二级指针即指向指针的指针,

    int a=5;
    int *b=&a;
    int **c=&b;

    例子解析:定义一个int型数据a,值为5,定义一个指向int型的指针b,b的值为a的地址。使用*b就是b指向地址的值。定义一个指向指针的指针c,c的值为b的地址,*c就是b的值,也就是a的地址,**c就是a的值,地址空间如下。

    一维数组与指针:

    数组其实就是一段连续空间的数据,指针可以随意指向某个地址,再读取该地址的值。

    复制代码

    int a[3];
    int *b=a;
    int *c=&a; //错误
    int (*c)[3]=&a; //正确
    int *d=&a[0];
    int *e=&a[1];
    int *f=&a[2];

    复制代码

    例子解析:

    1. 定义一维数组a[3],在例子中,a、&a、&a[0]的值虽然都是一样,但是意义不一样。a代表a[3]这个数组,也是a[3]的起始地址。&a就是取a[3]的起始地址。&a[0]就是取数组第一个元素的地址。

    2. 例子中,使用int *c=&a是错误的,因为a的数据类型是int (*)[3],而不是int *,所以必须以int (*c)[3]=&a。

    3. 定义了int (*c)[3]=&a,可以使用(*c)[0]取得a[0],(*c)[1]取得a[1],(*c)[2]取得a[2]。

     

     

    展开全文
  • arr到底是什么含义,请看下面代码: //arr和&arr到底是啥 #include <stdio.h> #include<stdlib.h> int main() { int arr[10] = { 0 }; printf("arr= %p\n", arr); printf("&...

    如果定义int arr[10]={0};

    那么arr 和&arr到底是什么含义,请看下面代码:

    //arr和&arr到底是啥
    #include <stdio.h>
    #include<stdlib.h>
    int main()
    {
    	int arr[10] = { 0 };
    	printf("arr= %p\n", arr);
    	printf("&arr= %p\n", &arr);
    	printf("arr+1= %p\n", arr + 1);
    	printf("&arr+1= %p\n", &arr + 1);
    	system("pause");
    	return 0;
    }

    可以看到虽然arr和&arr的地址是一样的,但是arr+1的地址向后走了四个字节,也就是跳过了一个元素。

    &arr+1可以看到和arr相差40个字节,是跳过了整个数组。那么&arr表示的是取整个数组的地址而不是数组首元素的地址 。

    数组指针的使用

    #include <stdio.h>
    #include<stdlib.h>
    void print_arr1(int arr[3][5], int row, int col)
    {
    	
    		int i = 0;
    	for (i = 0; i < row; i++)
    	{
    		for (int j = 0; j < col; j++)
    		{
    			printf("%d ", arr[i][j]);
    
    		}
    		printf("\n");
    	}
    }
    void print_arr2(int(*arr)[5], int row, int col)
    {
    	int i = 0;
    	for (i = 0; i < row; i++)
    	{
    		for (int j = 0; j < col; j++)
    		{
    			printf("%d ", arr[i][j]);
    		}
    		printf("\n");
    	}
    }
    int main()
    {
        //int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
    	//int(*p)[10] = &arr;//把数组arr的地址赋值给数组指针变量p 区别二维数组的数组名
    	但是我们一般很少这样写代码
    	int arr[3][5] = { 1,2,3,4,5,
    		              6,7,8,9,10 };
    	print_arr1(arr, 3, 5);//int (*)[5]
    	//数组名arr,表示首元素的地址
    	//但是二维数组的首元素是二维数组的第一行,行指针,数组指针。
    	//所以这里传递的arr,其实相当于第一行的地址,是一维数组的地址
    	//可以数组指针来接收
    	print_arr2(arr, 3, 5);
    	system("pause");
    	return 0;
    }

        数组名arr,表示首元素的地址
        但是二维数组的首元素是二维数组的第一行,行指针,数组指针。
        所以这里传递的arr,其实相当于第一行的地址,是一维数组的地址
        可以数组指针来接收

    展开全文
  • C++一维数组指针详解

    2020-04-13 09:41:48
    int main() { int a[5]={1,2,3,4,5};...a[0],此时p1是数组a的第个元素的地址 cout<<*p1<<endl; //输出a[0] cout<<*(p1+1)<<endl; //输出a[1] int (*p2)[5]; p2=&...
    int  main()
    {  
    
    	int a[5]={1,2,3,4,5};
    
    	int *p1;
    	p1=a; //相当于p1=&a[0],此时p1是数组a的第一个元素的地址
    
    	cout<<*p1<<endl; //输出a[0]
    	cout<<*(p1+1)<<endl;  //输出a[1]
    
    	int (*p2)[5];
    	p2=&a;   //&a表示整个数组的地址,p2是数组指针,指向一个5个int的一维数组,此时p2是数组a的首地址
    	//虽然p2在数值上等于&a[0],但与&a[0]的意义完全不同
    
    	cout<<*p2<<endl;  //虽然加了取值符号,但此时*p2仍然是地址,表示数组a第一个元素的地址
    	cout<<**p2<<endl; //数组a的第一个元素,即a[0]
    
    	cout<<*p2+1<<endl;  //数组a第二个元素的地址
    	cout<<*(*p2+1)<<endl; //数组a的第二个元素,即a[1]
    
    	cout<<p2+1<<endl; //因为p2是数组指针,所以p2+1会跳过5个元素的地址,因此p2+1表示下一个5个int的一维数组的首地址
    	//为了更好地理解,假设数组a后面紧接着一个数组b={6,7,8,9,10},则p2+1表示数组b的首地址
    	cout<<*(p2+1)<<endl; //数组b的第一个元素的地址,数值上等于&a[4]+1,也相当于&b[0]
    	cout<<**(p2+1)<<endl; //数组b的第一个元素,数组b只是我假想的,实际上该位置的值未定义,所以会输出一个随机值
    
    	return 0;
    }

     

    展开全文
  • 文章目录一维数组指针和二维数组指针的定义一维数组指针和二维数组指针用于索引数组元素一维数组指针和二维数组指针的可视化解读 一维数组指针和二维数组指针的定义 一维数组指针的定义就是普通指针的定义 指针变量...

    一维数组指针和二维数组指针的定义

    • 一维数组指针的定义就是普通指针的定义 指针变量类型 *指针变量名称 --> int *p
    • 二维数组指针变量的定义略微复杂:指针变量类型 *指针变量名称[二维数组的列数] --> int(*p2)[3]

    一维数组指针和二维数组指针用于索引数组元素

    在这里插入图片描述

    一维数组指针和二维数组指针的可视化解读

    在这里插入图片描述

    使用二维数组指针的实例演示

    • 题目:使用二维数组指针,通过输入行数和列数,打印出二维数组对应的索引的值。
      在这里插入图片描述【代码】
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    void main() {
    	int a, b;
    	printf("c数组是一个2行3列的数组\n");
    	printf("请输入您想要索引的行和列\n");
    	scanf("%d %d",&a,&b);
    
    	int c[][3] = { {1,2,3},
    				   {4,5,6} };
    	int(*p)[3] = c;
    
    	printf("c[%d][%d]=%d\n", a, b, *(*(p + a) + b));  //使用指针的索引方式
    
    	printf("c[%d][%d]=%d\n", a, b, c[a][b]);	// 使用数组直接索引
    }
    
    展开全文
  • 维数组数组指针详解

    多人点赞 2020-07-26 18:18:53
    新的理解:我们可以这样认为,a可以看作是一个一维数组,包含2个元素,每个元素恰好是包含3个整型的元素,a这个名字的值成了指向一个包含3个整型元素的数组的指针(你学过数组指针就该知道,他们是一个道理,后面我...
  • 概念详解:指针指针与“int a”,...一维数组:定义一维数组之后,即在内存中分配一段连续的地址空间,如C语言中,int num[5],在32位系统中,int占据4个字节,现假设num[0]的地址空间为0x00000004,那么num[...
  • C语言二维数组指针(指向二维数组的指针)详解

    千次阅读 多人点赞 2020-05-27 17:43:22
    如有需要,请访问C语言二维数组指针(指向二维数组的指针)详解 二维数组在概念上是二维的,有行和列,但在内存中所有的数组元素都是连续排列的,它们之间没有“缝隙”。以下面的二维数组 a 为例: int a[3][4] = { ...
  • LOGO 数组与指针一维数组地址和指针 主讲人周芸 教学目标 掌握一维数组的指针的用法 理解一维数组指针的本质 具备应用一维数组指针编程的能力 张丽去排队打疫苗医生通过叫号的方式依次注射 引入 一指向一维数组的...
  • 以下是对C++中一维数组指针的关系进行了详细的总结介绍,需要的朋友可以过来参考下
  • 主要介绍了C++中用new创建二维数组指针数组实例代码,非常不错,具有参考借鉴价值,需要的朋友参考下
  • C++一维数组指针的关系总结
  • 利用数组指针p将main函数中输入的二维数组a的所有元素输出, 要求先按行的顺序输出,然后再以列的顺序输出, 其中输出整型格式用 “%3d”, (测试用数据大小不要超过2位数)。 函数接口定义: void reOut(int (*p)[3]...
  • 用于比较指针数组和数组指针实现算法的差异,利用函数返回指针实现。 可作为研究C语言指针使用的范例程序。 有源代码和实现结果图。
  • C语言之指向一维数组指针

    万次阅读 多人点赞 2018-04-17 11:41:53
    int array[5] = {1, 2, 3, 4, 5}; // 定义数组 ...上述三条语句分别定义了数组, 指向数组元素的指针和指向数组指针. 内存情况如图示: 对于指向数组元素的指针很好理解, 但是怎样理解 指向数组指针...
  • 但在内存中,a 的分布是一维线性的,整个数组占用一块连续的内存: C语言中的二维数组是按行排列的,也就是先存放 a[0] 行,再存放 a[1] 行,最后存放 a[2] 行;每行中的 4 个元素也是依次存放。数组 a
  • 个指针赋值引发的思考? int a[5] = { 0 }; int(*c)[5] = &a; a 是个数组,只用 a 的话,a 就代表数组首...c 是数组指针,就是指向数组的指针,所以给 c 赋值 c = &a; *c自然就等于a, *c是数组a...
  • a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; int *p = a; //普通指针 int (*p)[4] = a; //数组指针 int *p[4]; //指针数组 1、普通指针 int *p=a,p实际上表示的就是a[0]...2、数组指针:指向数组的指针 int (*p...
  • 维数组指针

    千次阅读 2019-04-04 18:47:25
    int a[5]={1,2,3,4,5}; int *p=(int *)(&...本身a作为个地址,p作为指向a的地址,相当于个二维指针个二维指针加一相当于移动了行,所以这里是移动了5*4个字节,而对于q+1的情况,说明移动了4个字节...
  • 一、一维数组传参 #include<stdio.h> #include<stdlib.h> #include <stdio.h> void test(int arr[])//ok? yes {} void test(int arr[10])//ok? yes {} void test(int *arr)//ok? yes {} void ...
  • c/c++ 二维数组指针参数传递 矩阵计算实例

    千次阅读 多人点赞 2019-03-30 00:57:19
    今天我将试图用沙雕文风解释二维数组的知识;D 1问题 首先我们来看一下问题 FBIwarning:建议在阅读答案前,独立思考,先自行尝试,遇到问题再继续阅读。 怎么样!看起来就很难对吧!实际上!它确实不...
  • 一维数组指针访问。 二维数组的创建和初始化。 二维数组的使用。 二维数组在内存中的存储。 二维数组的指针访问。 一维数组的创建和初始化 数组的创建 对数组的描述:数组是一组相同类型元素的集合 数组的...
  • 维数组指针问题

    2019-08-15 09:27:33
    编写个程序,初始化个double类型的3×5二维数组,使用个处理变长数组的函数将其拷贝至另个二维数组中。还要编写个以变长数组为形参的函数以显示两个数组的内容。这两个函数应该能处理任意N×M数组。(《C ...
  • c++ 一维数组指针

    千次阅读 2017-09-23 09:01:09
    本文主要讲述c++中数组指针的转换关系。...1、当我们定义数组时,数组名代表的是数组,并非指针。 例1: int a[5] = {0,1,2,3,4};cout 例1输出: // 2、当数组名传递给个函数的形参、作
  • 维数组与指针、指针数组、数组指针的用法

    万次阅读 多人点赞 2018-03-12 18:16:20
    二维数组和指针⑴ 用指针表示二维数组元素。要用指针处理二维数组,首先要...而每个大数组元素对应二维数组的一行,我们就称之为行数组元素,显然每个行数组元素都是一个一维数组下面我们讨论指针和二维数组元素的...
  • 一维数组指针: 1、一维数组名: 对于这样的一维数组:int a[4]; a作为数组名就是我们数组的首地址, a是一个地址常量 .  首先说说常量和变量的关系, 对于变量来说, 用箱子去比喻再好不过了, 声明一个变量就声明一...
  • 一维数组、二维数组 和 一维指针、二维指针的本质区别 数组和指针极其相似,他们的访问、查询、赋值操作是一模一样的,但指针和数组还是有去别的·,就是他的初始化,数组的初始化是自动的,而指针是被动的,数组...
  • c++二维数组指针详解

    2020-04-13 10:42:13
    int main() { int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};... //上面可以这么理解:对于一维数组a[],数组名a是第一个元素a[0]的地址,那么对于二维数组a[][],一维数组名a[0]是它的第一个元素a[0][...
  • 关于用指针方式访问二维数组的问题 首先说明几种类型: ... //该语句是定义一个指向数组的指针,指向含4个int元素的一维数组。跨度为4*sizeof(int); int * q2[4]; //定义了一个数组 里面存有int *...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,755
精华内容 47,502
关键字:

一维数组的指针是什么