*p=array i p=array+i (C语言) 这两个是什么意思

如题所述

应该是

*p=array[i]
p=array+i
这两句
其中p是一个指针 而array是一个数组,二者类型应该是相同的。
*p=array[i]
是说 p已经分配好空间了,然后把p指向空间赋值为array中第i个元素的值
而p=array+i 是把array 上第i个元素的地址,分配给p
或者说 p指向这个地址。

而其中区别为,前者只是简单赋值,后续对array[i]值的改变不会影响到*p值
后者是直接赋值地址,后续对*p或者array[i]值改变,都会改变另一个的值。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-08-13
能把分号加上么,这样怎么看

*p=array i p=array+i (C语言) 这两个是什么意思
应该是 p=array[i]p=array+i 这两句 其中p是一个指针 而array是一个数组,二者类型应该是相同的。p=array[i]是说 p已经分配好空间了,然后把p指向空间赋值为array中第i个元素的值 而p=array+i 是把array 上第i个元素的地址,分配给p 或者说 p指向这个地址。而其中区别为,前者只是简单赋值...

C语言中&array[i]为什么相当于array+i?这是一种规定吗?还有,面向对象...
是一种道理. &是取地址运算符.array这个数组变量名就相当于一个地址.[]这个运行算符里面的索引就是告诉,向前走多远去找下一个元素.array+i也是一样,从 array这个地址再走 i个那么长的地方去另一个数组元素.

计算机c语言中 指针变量p自增1 什么意思
自增就是+1的意思,地址+1就是指向下一个元素。例如 int array[3]={1,2,3};int*p=array;\/\/此时p指向array[0]p++;\/\/这里的p自增,执行后p指向array[1]

C语言中二维数组行指针是什么
它是以‘行’来作为指针移动单位的,如array+i 指向的是第 i 行。对 array 进行 * 运算,得到的是一维数组 array[0] 的首地址,所以 *array 与 array[0] 为同个值。如果定义 int* p,p为指int类型的指针,指向int 类型,而不是地址。故以下操作 :p=array[0] (正确) ,p=array (错...

关于C语言编程问题
p=array这是在定义指针的时候赋初值,相当于 int *p;p=array;

C语言实现的快速排序中,请问为什么*(array+i)=*(array+j)可以代表...
array[10];那么array就是数组首地址,即&array[0];也就是说array是一个指针,指向array[0];那么array + i,等于&array[i];那么*(array + i) 等于array[i];同理,那么 (array+i)=*(array+j)等于把array[j] 的内容赋值给了array[i];我只帮你到这了。多想想,你会明白的。

求一个C#中使用高性能数组(使用指针)的实际应用
如果变量p是任意指针类型,X是一个整数,表达式p[X]就被编译器解释为*(p+X),这适用于所有的指针,不仅仅是用stackalloc初始化的指针。利用这个简捷的记号,就可以用一种非常方便的方式访问数组。实际上,访问基于堆栈的一维数组所使用的语法与访问基于堆的、由System.Array类表示的数组是一样的:doubl...

c语言程序设计:有一个已排好序的数组,要求输入一个数后,按原来排序的规...
设排序是从大到小进序的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素i即可。如果被插入数比所有的元素值都小则插入最后位置。main(){ int i,j,p,q,s...

指针变量后加一个[ ]什么意思?
指针p指向数组array的起始地址,那么这个数组的元素a[i]也可以用p[i]来表示。array[2]=*p++;\/\/表示数组元素array[2]=*p,,p++即array[0]为1,指针指向数组元素array[1]的地址 cout<<array[2]<<endl;cout<<*p<<endl;cout<<p[2]<<endl;\/\/可以看成指针p指向以数组元素array[1]的地址为...

C语言 题目的最小值输出有问题,最后是把元素由小到大进行排序,不知道哪 ...
int i,j,index;p=array;printf("please input 10 number\\n");for(i=0;i<10;i++)scanf("%lf",p+i);for(i=0;i<10;i++)\/\/printf("%lf %ox",array[i],&array[i]);p=array;max=*p;min=*p;sum=*p;for(i=0;i<10;i++){ \/\/p++;if(*p>max)max=*p;if(*p<=min)min=...

相似回答