请教各位高手一个C语言的问题

chengliangLEO 2008-11-07 10:26:04
小弟初学C,看了一个程序有点不明白,请教各位一下:
#include<stdio.h>
main()
{
int c[3][3]={1,2,3,4,5,6,7,8,9};
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
printf("%ld\n",&c[j]);
printf("-------------------------\n");
printf("%ld\n",(c+1));
printf("%ld\n",(*c+1));
printf("%ld\n",&c[0][0]);
printf("%ld\n",**c);
printf("%ld\n",*c[0]);
if(int(c)==int(*c))
printf("equl");
}
哪位高手能帮我分析一下这个程序,我看的不是很明白,多谢了
...全文
100 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengliangLEO 2008-11-08
  • 打赏
  • 举报
回复
多谢各位了!!~~
wiowei 2008-11-07
  • 打赏
  • 举报
回复
是c[i][j]打错成c[j]了吧。。
cyj626 2008-11-07
  • 打赏
  • 举报
回复
楼上的说的对
The_facE 2008-11-07
  • 打赏
  • 举报
回复
外面的i循环有啥用呢?多输出2遍?不明白。
overbai 2008-11-07
  • 打赏
  • 举报
回复
2L已经说的很清楚了
Qlaiaqu 2008-11-07
  • 打赏
  • 举报
回复
#include <stdio.h>
main()
{
int c[3][3]={1,2,3,4,5,6,7,8,9}; //赋值
for(int i=0;i <3;i++)
for(int j=0;j <3;j++)
printf("%ld\n",&c[j]); //c[x]代表的是c[x][0],&c[x]即&c[x][0]的地址,此处轮回三次输出c[0][0],c[1][0],c[2][0]的地址
printf("-------------------------\n");
printf("%ld\n",(c+1)); //c为c[0][0],此处加1算出来的值是c[1][0]的地址
printf("%ld\n",(*c+1)); //*c+1 ,输出的是c[0][1]的地址
printf("%ld\n",&c[0][0]); //输出c[0][0]的地址
printf("%ld\n",**c); //输出c[0][0]保存的值
printf("%ld\n",*c[0]); //输出c[0][0]保存的值
if(int(c)==int(*c)) //int(c) == int (*c) ==int(**c),所以相等
printf("equl");
}
zhangxuyu1118 2008-11-07
  • 打赏
  • 举报
回复
#include <stdio.h>
main()
{
int c[3][3]={1,2,3,4,5,6,7,8,9};
for(int i=0;i <3;i++)
for(int j=0;j <3;j++)
printf("%ld\n",&c[j]);
printf("-------------------------\n"); //打印出各成员的地址,请注意指针当前位置
printf("%ld\n",(c+1)); //c是指针,整数指针移动到下个位置,偏移量是3个整数(数组的数组嘛)
printf("%ld\n",(*c+1)); //*c还是指针,没有完全解引用;整数指针移动到下个位置,偏移量是1个整数
printf("%ld\n",&c[0][0]); //首地址
printf("%ld\n",**c); //第一个数字
printf("%ld\n",*c[0]);//第一个数字
if(int(c)==int(*c)) //证明两种写法是否都指向首地址
printf("equl");
}
yujian793 2008-11-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 chengliangLEO 的帖子:]
小弟初学C,看了一个程序有点不明白,请教各位一下:
#include <stdio.h>
main()
{
int c[3][3]={1,2,3,4,5,6,7,8,9};
for(int i=0;i <3;i++)
for(int j=0;j <3;j++)
printf("%ld\n",&c[j]); //c[0][0],c[1][0],c[2][0]的地址
printf("-------------------------\n");
printf("%ld\n",(c+1)); //c[1][0]的地址
printf("%ld\n",(*c+1)); //c[0][1]的地址
printf("%ld\n",&c[0][0]); //同上
printf("%ld\n",**c); //c[0][0]的值
printf("%ld\n",*c[0]); //c[0][0]的值
if(int(c)==int(*c)) //=c 是c[3][3]数组的首地址
printf("equl");

[/Quote]

以上
zhangxuyu1118 2008-11-07
  • 打赏
  • 举报
回复
这是个观察二维数组中各个整数地址的例子

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧