鱼C论坛

 找回密码
 立即注册
查看: 2250|回复: 16

数组问题

[复制链接]
发表于 2016-1-8 15:31:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 康小泡 于 2016-1-8 16:07 编辑
#include<stdio.h>
void main()
{
       int a[10],i;
       int *p;
      printf("input ten numbers:\n");
      for(i = 0;i < 10;i++)
      {
            scanf("%d",&a[i]);
      }

      for (p = a;p < (a + 10);p++)   这里有点不明白,这里P是指针变量,而a是数组名,怎么就把数组名赋值了给指针变量了呢
                                                     
 
      {
            printf("%d\n",*p);
      }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-8 16:08:03 | 显示全部楼层
a其实表示的是a[0]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-8 22:38:17 | 显示全部楼层
数组是数组(不是指针),但是数组名经常会转换为指针(只想数组的首元素)。只有在少数几种情况下,数组名不糊转换为指针,其中之一是sizoeof运算符,似乎还有一种情况,我忘了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-9 09:08:38 | 显示全部楼层
康小泡 发表于 2016-1-8 16:08
a其实表示的是a[0]

如果是A【0】的话,那第一个值就不会是0哦,就应该是用户第一个输入的数了哦,这样的话就有点解释不通了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-9 09:19:26 | 显示全部楼层
一般指针的变量都会指向数组的首地址  也就是说P=a[0];
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-9 09:30:18 | 显示全部楼层
xiaohu168888 发表于 2016-1-9 09:08
如果是A【0】的话,那第一个值就不会是0哦,就应该是用户第一个输入的数了哦,这样的话就有点解释不通了 ...

不是这样的  数组a[10]那代表的10个数为 a[0]a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 这十个数  而不是你输入的十个数   感觉你这里的代码是输出十个数的大小 吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-9 09:40:30 | 显示全部楼层
黑执事 发表于 2016-1-9 09:30
不是这样的  数组a[10]那代表的10个数为 a[0]a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 这十个数   ...

是输出10个数的大小,按你这样说的,我明白 了一点,p=a[0],如果a[0]=10,那么*P的值是不是就等于10了呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-9 09:49:56 | 显示全部楼层
本帖最后由 xiaohu168888 于 2016-1-9 09:52 编辑
xiaohu168888 发表于 2016-1-9 09:40
是输出10个数的大小,按你这样说的,我明白 了一点,p=a[0],如果a[0]=10,那么*P的值是不是就等于10了呢?


这个是我在百度里找到的,你说的是正确的,就是有一点想不明白。    不知道为什么我上传的附件看不到。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-9 10:06:25 | 显示全部楼层
xiaohu168888 发表于 2016-1-9 09:40
是输出10个数的大小,按你这样说的,我明白 了一点,p=a[0],如果a[0]=10,那么*P的值是不是就等于10了呢?

不是等于10  等于10 在C语言是这样的 a[0]==10; 在这里 是赋值10  只是 一个等于而已  a[0]=10;一般的指针都会指向数组的首地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-9 10:07:54 | 显示全部楼层
xiaohu168888 发表于 2016-1-9 09:49
这个是我在百度里找到的,你说的是正确的,就是有一点想不明白。    不知道为什么我上传的附件看不到。

先截图  然后保存在电脑里  再在电脑里上存
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-9 10:28:09 | 显示全部楼层
黑执事 发表于 2016-1-9 10:06
不是等于10  等于10 在C语言是这样的 a[0]==10; 在这里 是赋值10  只是 一个等于而已  a[0]=10;一般的指 ...

哦,想明白了,这样才能循环下去。谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-9 10:29:23 | 显示全部楼层
xiaohu168888 发表于 2016-1-9 10:28
哦,想明白了,这样才能循环下去。谢谢。

11111111111.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-9 15:23:54 | 显示全部楼层
xiaohu168888 发表于 2016-1-9 10:28
哦,想明白了,这样才能循环下去。谢谢。

版本,再麻烦你一下哈,我越想越不对了,我让我a[10]={2, 4 ,8,9,7,4,6,2,3,0}
for(p=a;p<(a+10);p++)
内部是怎么循环呢,首先,初始值P=a[0]==2, 2<12 这里是怎么把数组a[0]的值给到*P的( *p==2) 然后P++ ,然后打印出来,同时后面怎么循环下去呢,我用调试的方法也看不明白,麻烦给我说下,谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-10 00:30:00 | 显示全部楼层
仰望天上的光 发表于 2016-1-8 22:38
数组是数组(不是指针),但是数组名经常会转换为指针(只想数组的首元素)。只有在少数几种情况下,数组名 ...

&的时候
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-11 19:46:50 | 显示全部楼层
数组是数组(不是指针),但是数组名经常会转换为指针(只想数组的首元素)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-11 20:44:56 | 显示全部楼层
指针 地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-12 17:02:23 | 显示全部楼层
&p 就是取地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 18:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表