
C语言简单程序。指针
/*Note:YourchoiceisCIDE*/#include"stdio.h"voidmain(){inta[3][3]={0,1,2,3,4,5,6,7,8},*...
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int a[3][3]={0,1,2,3,4,5,6,7,8},**p;
*p=&a[0];
printf("%d",*(*(p+2)+1));
}这个语句错在哪里? 展开
#include "stdio.h"
void main()
{
int a[3][3]={0,1,2,3,4,5,6,7,8},**p;
*p=&a[0];
printf("%d",*(*(p+2)+1));
}这个语句错在哪里? 展开
6个回答
展开全部
*p=&a[0];
这个是错误的,
void main()
{
int a[3][3]={0,1,2,3,4,5,6,7,8}, *p;
p=*a;//把数组的起始地址赋值给p
printf("%d",*(p+2)+1);//*(p+2)得到第三行的第一个元素,即5,*(p+2)+1)就是5+1
//如果想直接将指针定义为代表某一行元素,应该是p=&a[i][0];
}
这个是错误的,
void main()
{
int a[3][3]={0,1,2,3,4,5,6,7,8}, *p;
p=*a;//把数组的起始地址赋值给p
printf("%d",*(p+2)+1);//*(p+2)得到第三行的第一个元素,即5,*(p+2)+1)就是5+1
//如果想直接将指针定义为代表某一行元素,应该是p=&a[i][0];
}
展开全部
搞什么飞机??
1, *p=&a[0]; // p是个指向指针的指针, *p 是个指针。 这里会出错, 因为p并没有初始话,其值是随机的。 如果p指向的是系统内存, 那么*p 就是系统内存,我们给*p赋值就会发生内存访问错误。
你可以直接p = &a[0]; 也可以把 p声明成 int *p;
2, printf("%d",*(*(p+2) + 1)); // 即使上面正确的把p赋值为数组的首地址,这句错了: p+2指向
a[2], 所以*(p+2)等于2, 因为 p是双层指针, 那么*(p+2)其实就是一个int指针,*(p+2) + 1就是
2 + sizeof(int) * 1等于6. *(*(p+2) + 1)就是*6,很显然地址6是系统内存,引发内存访问错误。
1, *p=&a[0]; // p是个指向指针的指针, *p 是个指针。 这里会出错, 因为p并没有初始话,其值是随机的。 如果p指向的是系统内存, 那么*p 就是系统内存,我们给*p赋值就会发生内存访问错误。
你可以直接p = &a[0]; 也可以把 p声明成 int *p;
2, printf("%d",*(*(p+2) + 1)); // 即使上面正确的把p赋值为数组的首地址,这句错了: p+2指向
a[2], 所以*(p+2)等于2, 因为 p是双层指针, 那么*(p+2)其实就是一个int指针,*(p+2) + 1就是
2 + sizeof(int) * 1等于6. *(*(p+2) + 1)就是*6,很显然地址6是系统内存,引发内存访问错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
越界了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int a[3][3]={0,1,2,3,4,5,6,7,8},**p;
*p=&a[0];
这两句改为:
int a[3][3]={0,1,2,3,4,5,6,7,8},(*p)[3];
p=a;
*p=&a[0];
这两句改为:
int a[3][3]={0,1,2,3,4,5,6,7,8},(*p)[3];
p=a;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
指针定义不匹配,&a[0]是数组的首地址,是(*)[3]类型的,而你定义的指针是**p,因此类型不一致。可以改一下 试试。
追问
可以再详细点吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里没必要用两层指针的**p
#include "stdio.h"
void main()
{
int a[3][3]={0,1,2,3,4,5,6,7,8},*p;
p=a;
printf("%d",*(*(p+2)+1));
}
这个语句错在哪里?
#include "stdio.h"
void main()
{
int a[3][3]={0,1,2,3,4,5,6,7,8},*p;
p=a;
printf("%d",*(*(p+2)+1));
}
这个语句错在哪里?
追问
p=a;不应该是p=&a;吗?
追答
你仔细看看数组哪一章和指针哪一章把,
应该不难理解
数组的名字就可以当指针用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询