c++的c 二维数组指针与指针问题

您的举报已经提交成功,我们将尽快处理,谢谢!
函数用二分来查找这个数或者比它大的最小的数,返回位置
#include "iostream.h"
#define MAXN 100
#define...
当然,如果你分配的内存过小的话,a超出部分会被抛弃掉。
realloc会将你的数组复制到新的内存中。
大家还关注
(window.slotbydup=window.slotbydup || []).push({
id: '2081942',
container: s,
size: '1000,60',
display: 'inlay-fix'C++中一维数组与指针的关系详细总结
字体:[ ] 类型:转载 时间:
以下是对C++中一维数组与指针的关系进行了详细的总结介绍,需要的朋友可以过来参考下
对于数组int a[10];a表示数组的第一个元素的地址,即&a[0];
如果使指针p,指向数组的首元素,可以进行操作:int * p=a;或者int *p=&a[0];
那么p++,是指向数组中的先一个元素,即a[1];此时*p则是a[1]中所放的值。此时,a[i]=p[i]=*(a+i)=*(p+i)
下面举一个例子;直接用a[i]来输出 代码如下:#include&iostream&int main(){&int a[10]={1,2,3,4,5,6,7,8,9,10};&cout&&"Please input 10 intergers: "&&&int i=0;&for(i=0;i&10;i++)&cout&&a[i]&&" ";&cout&&&return 0;}用*(a+i)来输出
代码如下:#include&iostream&int main(){&int a[10]={1,2,3,4,5,6,7,8,9,10};&cout&&"Please input 10 intergers: "&&&int i=0;&for(i=0;i&10;i++)&cout&&*(a+i)&&" ";&cout&&&return 0;}用*(p+i)来输出
代码如下:#include&iostream&int main(){&int a[10]={1,2,3,4,5,6,7,8,9,10};&cout&&"Please input 10 intergers: "&&&int i=0;&int * p=a;&for(i=0;i&10;i++)&cout&&*(p+i)&&" ";&cout&&&return 0;}关于*p++由于++和*的优先级相同,结合方向是自右而左,因此它等价于*(p++)。作用是:先得到p指向的变量的值(即*p),然后再使指向p的值加1. 代码如下:#include&iostream&int main(){&int a[10]={1,2,3,4,5,6,7,8,9,10};&cout&&"Please input 10 intergers: "&&&int i=0;&int * p=a;&while(p&a+10){&&cout&&*p++&&"\t";&}&cout&&&return 0;}等价于
代码如下:#include&iostream&int main(){&int a[10]={1,2,3,4,5,6,7,8,9,10};&cout&&"Please input 10 intergers: "&&&int i=0;&int * p=a;&while(p&a+10){&&cout&&*p&&"\t";&&p++;&}&cout&&&return 0;}*p++等价于*(p++);而*(++p)表示先使p+1,再取*p.
代码如下:#include&iostream&int main(){&int a[10]={1,2,3,4,5,6,7,8,9,10};&cout&&"Please input 10 intergers: "&&&int i=0;&int * p=a;&while(p&a+10){&&cout&&*(++p)&&"\t";&}&cout&&&return 0;}运行上面的程序,结果将输出a[2]到a[11]的值,其中a[11]并没有定义。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具c++指针指向数组的问题_百度知道
c++指针指向数组的问题
//错误为什么一个指针不能指向一个数组的地址呢,却能指向这个数组元素的地址,求高人指点啊;正确short *b=&a;short *b=a;/
&#47short a[10]
提问者采纳
&#47&a的类型是short (*)[10];
那么 bb和&a就是一种类型 short (*pa)[10]=&a; 不是short* short (*)[10] 是指向一个有10个short元素的数组的指针比如有 short bb[3][10]
谢谢, 是不是a这个数组里的元素都是short类型的,所以能用 short *b=&a[0];
但是对于数组a来说,必须要用一个专门指向数组的
数组指针 short(*)[10]来指向呢。
就是稍微有点糊涂,因为总觉得a本身就是个short数组,数组也有自身的地址,那么地址直接用指针指向就行了
对,数组的地址类型就是它的元素的地址类型 short a[10] ,a的类型就是 short* , 所以short*b=a; 可行&a相当于把a提升了一级,就是short(*)[10]; short bb[3][10] ,可以看作是由short[10]组成的数组, 所以bb的类型就是 short(*)[10];
提问者评价
其他类似问题
为您推荐:
其他5条回答
如 b = &a+1;对一个数组取地址时,代表的是整个数组整体,包括对&a做加1运算也是以数组长度为单位你可以这样写short (*b)[10]=&a
你去看一下数组的基本资料了;数组名的值是一个指针常量,也就是数组第一个元素的地址;
这个a就是a[10]的指针,你再取&a就是指针的指针了。再简单点说a=&a[0],这样你就懂了吧。
谢谢,a=&a[0] 但是&a是整个数组的地址,也是个地址类型,那么short *b不就可以指向地址吗
short *b只能指向short型的变量。指针其实是个int型的变量。你非得用short *b,用强转也是可以的,但是你用b的这个指针去操作那些数据是不对的。因为编译器编译完成后会按照short型的规则去操作那些数据。
数组a[]的&a&本身就是地址值,short *b=a;
//正确&a没什么意义所以short *b=&a;//错误
a已经是地址了,&a是地址的地址声明的数组a[10],a代表a[0]的地址
谢谢,地址的地址
为什么不能使short* 的类型
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁首先强调 指针数组归根结底是个数组;数组指针归根结底是个指针。
以int (*int)[10]为例
()的优先级大于[],因此首先它是一个指针,它指向一个数组,数组的维数是10。因此数组指针也称为&行指针&,它的跨度是一行一行的。例如
#include &iostream&
using namespace
int main()
int v[2][3] = {{1, 2, 3}, {4, 5, 6}};
int (*a)[3] =
//指向第0行的指针
cout && **a &&
cout && **(a+1) &&
//a+1 变成指向第1行的指针
&它的主要用途是用在二维数组的传递,例如
#include &iostream&
using namespace
void test(int (*v)[3])
cout && v[1][1] &&
int main()
int v[2][3] = {{1, 2, 3}, {4, 5, 6}};
结果输出5, 更多向函数中传递二维数组。
它是一个数组,;里面存放的东西是指针。
行如 int* pv[3],[]的优先级大于*,因此它是一个维数为3的数组,里边存放这指向int的指针。例如
#include &iostream&
using namespace
int main()
int v[2][3] = {{1, 2, 3}, {4, 5, 6}};
int* pv[2];
for (int i = 0; i & 2; ++i)
pv[i] = v[i];
阅读(...) 评论()

我要回帖

更多关于 c 指向数组的指针 的文章

 

随机推荐