xiaohu168888 发表于 2016-1-8 15:31:18

数组问题

本帖最后由 康小泡 于 2016-1-8 16:07 编辑

#include<stdio.h>
void main()
{
       int a,i;
       int *p;
      printf("input ten numbers:\n");
      for(i = 0;i < 10;i++)
      {
            scanf("%d",&a);
      }

      for (p = a;p < (a + 10);p++)   这里有点不明白,这里P是指针变量,而a是数组名,怎么就把数组名赋值了给指针变量了呢
                                                   

      {
            printf("%d\n",*p);
      }
}

康小泡 发表于 2016-1-8 16:08:03

a其实表示的是a

仰望天上的光 发表于 2016-1-8 22:38:17

数组是数组(不是指针),但是数组名经常会转换为指针(只想数组的首元素)。只有在少数几种情况下,数组名不糊转换为指针,其中之一是sizoeof运算符,似乎还有一种情况,我忘了。。。

xiaohu168888 发表于 2016-1-9 09:08:38

康小泡 发表于 2016-1-8 16:08
a其实表示的是a

如果是A【0】的话,那第一个值就不会是0哦,就应该是用户第一个输入的数了哦,这样的话就有点解释不通了。

黑执事 发表于 2016-1-9 09:19:26

一般指针的变量都会指向数组的首地址也就是说P=a;

黑执事 发表于 2016-1-9 09:30:18

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

不是这样的数组a那代表的10个数为 aa a a a a a a a a 这十个数而不是你输入的十个数   感觉你这里的代码是输出十个数的大小 吗?

xiaohu168888 发表于 2016-1-9 09:40:30

黑执事 发表于 2016-1-9 09:30
不是这样的数组a那代表的10个数为 aa a a a a a a a a 这十个数   ...

是输出10个数的大小,按你这样说的,我明白 了一点,p=a,如果a=10,那么*P的值是不是就等于10了呢?

xiaohu168888 发表于 2016-1-9 09:49:56

本帖最后由 xiaohu168888 于 2016-1-9 09:52 编辑

xiaohu168888 发表于 2016-1-9 09:40
是输出10个数的大小,按你这样说的,我明白 了一点,p=a,如果a=10,那么*P的值是不是就等于10了呢?

这个是我在百度里找到的,你说的是正确的,就是有一点想不明白。    不知道为什么我上传的附件看不到。

黑执事 发表于 2016-1-9 10:06:25

xiaohu168888 发表于 2016-1-9 09:40
是输出10个数的大小,按你这样说的,我明白 了一点,p=a,如果a=10,那么*P的值是不是就等于10了呢?

不是等于10等于10 在C语言是这样的 a==10; 在这里 是赋值10只是 一个等于而已a=10;一般的指针都会指向数组的首地址

黑执事 发表于 2016-1-9 10:07:54

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

先截图然后保存在电脑里再在电脑里上存

xiaohu168888 发表于 2016-1-9 10:28:09

黑执事 发表于 2016-1-9 10:06
不是等于10等于10 在C语言是这样的 a==10; 在这里 是赋值10只是 一个等于而已a=10;一般的指 ...

哦,想明白了,这样才能循环下去。谢谢。

xiaohu168888 发表于 2016-1-9 10:29:23

xiaohu168888 发表于 2016-1-9 10:28
哦,想明白了,这样才能循环下去。谢谢。

xiaohu168888 发表于 2016-1-9 15:23:54

xiaohu168888 发表于 2016-1-9 10:28
哦,想明白了,这样才能循环下去。谢谢。

版本,再麻烦你一下哈,我越想越不对了,我让我a={2, 4 ,8,9,7,4,6,2,3,0}
for(p=a;p<(a+10);p++)
内部是怎么循环呢,首先,初始值P=a==2, 2<12 这里是怎么把数组a的值给到*P的( *p==2) 然后P++ ,然后打印出来,同时后面怎么循环下去呢,我用调试的方法也看不明白,麻烦给我说下,谢谢。

SXTDU 发表于 2016-1-10 00:30:00

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

&的时候

chenshu 发表于 2016-1-11 19:46:50

数组是数组(不是指针),但是数组名经常会转换为指针(只想数组的首元素)

chenshu 发表于 2016-1-11 20:44:56

指针 地址

翟森 发表于 2016-1-12 17:02:23

&p 就是取地址
页: [1]
查看完整版本: 数组问题