指针-请大神指教二维数组,太感谢了!

问题描述

请大神指教二维数组,太感谢了!

#include
void main()
{
int a[2][2]={2,6,1,9};
int *p;
int i;
for(p=a;p<a+4;p++)
printf("%dn",*p);
}//这个会出现错误

#include
void main()
{
int a[2][2]={2,6,1,9};
int p;
int i;
p=a;
for(i=0;i<4;i++)
printf("%dn",
(p+i));
}//这个是对的

这两个程序为什么第一个是错的?

解决方案

for(p=a;p<a+4;p++)
a[2][2]={2,6,1,9};中的a是二维数组,是行指针,意思他a+1 ,加的是一行,不是1列
所以a+4就是&a[3][0]的地址,已经越界。所以报错。

p=a;
for(i=0;i<4;i++)
printf("%dn",(p+i));

p是一维指针,p+1,加的是一列。
例如p=a,p+1的值为a[0][1]的地址

解决方案二:

这样试试

 for(p=a;p<&a+4;p++)
printf("%dn",*p);
}

或者

 for(p=a;p<*a+4;p++)
printf("%dn",*p);
}

解决方案三:

for(p=a;p<a+4;p++)
a[2][2]={2,6,1,9};中的a是二维数组,是行指针,意思他a+1 ,加的是一行,不是1列
所以a+4就是&a[3][0]的地址,已经越界。所以报错。
p<a+4 p可以取到a[2][0],已经越界

解决方案四:

非常感谢你们的回答,我只是一只正在成长的菜鸟,你们就是我成长中的雨露。

时间: 2024-09-13 17:26:29

指针-请大神指教二维数组,太感谢了!的相关文章

二维数组-C语言自学一月,在做数据统合输出,请大神指教。

问题描述 C语言自学一月,在做数据统合输出,请大神指教. C语言自学一月,搞出了读取文件数据,进行平均数和标准偏差计算,再输出的程序. 就像这样. #include #include #include /*main program*/ int main() { float n[831],ave,sd; int i; char in_file_name[FILENAME_MAX], out_file_name[FILENAME_MAX]; FILE *inf, outf; float ave1(i

vs2012-我的C程序VS2013报错,都不知道错哪了,请大神指教

问题描述 我的C程序VS2013报错,都不知道错哪了,请大神指教 hash函数名和数组next都定义了,都不知道哪错了 解决方案 感觉是标准库的某些内容重复了. std::next是里的template, std::hash是里的template. 都是c++ 11定义的. 解决方案二: 自己重新定义一下名字,这几个名字已经在类库中存在了 解决方案三: 你的定义重复了,如果你的代码没有重复定义它们,可能是和你包含的库文件冲突了,那么换个名字看看 解决方案四: hash和next重复定义了. 你可

menu-菜鸟请大神指教,关于在fragment中加入vierpager的问题

问题描述 菜鸟请大神指教,关于在fragment中加入vierpager的问题 package com.yanis.yc_ui_fragment_menu; import java.util.ArrayList; import java.util.List; import com.health.Circle; import com.health.Information; import com.health.Market; import android.os.Bundle; import andr

编程c语言-求助!菜鸟一枚 请大神指教!

问题描述 求助!菜鸟一枚 请大神指教! 请问用c语言怎么计算校验和?能将带有汉字的文件读入然后计算?过程怎么写!好着急啊! 解决方案 文件不管有没有汉字,都当作二进制数据.校验和还分为不同位数的. 具体要看对方协议的要求 仅供参考:http://download.csdn.net/detail/captain_black/679608 解决方案二: 1.中文字符串可以使用printf().puts()等函数直接输出.#include #include int main(){ const char

c++-用C++做个B2c电子商务 ,没有思路,请大神指教!

问题描述 用C++做个B2c电子商务 ,没有思路,请大神指教! 用户注册,用户登录.(编号,账号,密码,姓名,资金,地址) 登录后菜单项:选购商品,查看订单,查看资金,充值,修改账户信息,注销,退出 商家登录,此处商家和系统平台是统一角色,平台自营类似苏宁易购. 登录后菜单项:查看.添加.修改.删除商品(编号,商品名称,商品信息,价格,库存量,规格,颜色,所属商家), 查看订单,查看金额,注销,退出,相应的子菜单里应有返回上一级菜单功能. 选购商品,用户登录后可以直接商品进行购买下单. 记录订单

协议-Android软件使用TCP进行通信,连接不到服务端,在同一子网,代码跟异常日志都有,请大神指教

问题描述 Android软件使用TCP进行通信,连接不到服务端,在同一子网,代码跟异常日志都有,请大神指教 客户端线程:class BB1 extends Thread{ public void run() { try { System.out.println(""hahahha""); Socket client=new Socket(ipadressPORT); System.out.println(client.getPort()); mingling=&qu

eclispe android-eclipse第一次创建android工程出错,请大神指教

问题描述 eclipse第一次创建android工程出错,请大神指教 解决方案 工程make编译一下看看,有些出现红色的X是因为没有编译. 解决方案二: 看下环境配置是否正确.新建项目就出错一般是环境的问题 解决方案三: 不知道你的adt是不是自己装的,我之前也遇过,后来用google已集成的adt就没事了,要我可以发给你

c++-为什么结果会不同?请大神指教

问题描述 为什么结果会不同?请大神指教 #include using namespace std; int main() { unsigned int x; unsigned int y = 100; unsigned int z = 50; x = y - z; cout << ""Difference is: "" << x << endl; x = z - y; cout << ""nNow

java-Java 8 代码要写junit测试,但是看不懂代码请大神指教

问题描述 Java 8 代码要写junit测试,但是看不懂代码请大神指教 @Bean public Jackson2ObjectMapperBuilder jacksonBuilder() { Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder(); builder.indentOutput(true) .serializerByType(LocalDate.class, new JsonSerializer