数组问题
本帖最后由 康小泡 于 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);
}
} a其实表示的是a 数组是数组(不是指针),但是数组名经常会转换为指针(只想数组的首元素)。只有在少数几种情况下,数组名不糊转换为指针,其中之一是sizoeof运算符,似乎还有一种情况,我忘了。。。 康小泡 发表于 2016-1-8 16:08
a其实表示的是a
如果是A【0】的话,那第一个值就不会是0哦,就应该是用户第一个输入的数了哦,这样的话就有点解释不通了。 一般指针的变量都会指向数组的首地址也就是说P=a; xiaohu168888 发表于 2016-1-9 09:08
如果是A【0】的话,那第一个值就不会是0哦,就应该是用户第一个输入的数了哦,这样的话就有点解释不通了 ...
不是这样的数组a那代表的10个数为 aa a a a a a a a a 这十个数而不是你输入的十个数 感觉你这里的代码是输出十个数的大小 吗? 黑执事 发表于 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:52 编辑
xiaohu168888 发表于 2016-1-9 09:40
是输出10个数的大小,按你这样说的,我明白 了一点,p=a,如果a=10,那么*P的值是不是就等于10了呢?
这个是我在百度里找到的,你说的是正确的,就是有一点想不明白。 不知道为什么我上传的附件看不到。 xiaohu168888 发表于 2016-1-9 09:40
是输出10个数的大小,按你这样说的,我明白 了一点,p=a,如果a=10,那么*P的值是不是就等于10了呢?
不是等于10等于10 在C语言是这样的 a==10; 在这里 是赋值10只是 一个等于而已a=10;一般的指针都会指向数组的首地址 xiaohu168888 发表于 2016-1-9 09:49
这个是我在百度里找到的,你说的是正确的,就是有一点想不明白。 不知道为什么我上传的附件看不到。
先截图然后保存在电脑里再在电脑里上存 黑执事 发表于 2016-1-9 10:06
不是等于10等于10 在C语言是这样的 a==10; 在这里 是赋值10只是 一个等于而已a=10;一般的指 ...
哦,想明白了,这样才能循环下去。谢谢。 xiaohu168888 发表于 2016-1-9 10:28
哦,想明白了,这样才能循环下去。谢谢。
好 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++ ,然后打印出来,同时后面怎么循环下去呢,我用调试的方法也看不明白,麻烦给我说下,谢谢。 仰望天上的光 发表于 2016-1-8 22:38
数组是数组(不是指针),但是数组名经常会转换为指针(只想数组的首元素)。只有在少数几种情况下,数组名 ...
&的时候 数组是数组(不是指针),但是数组名经常会转换为指针(只想数组的首元素) 指针 地址 &p 就是取地址
页:
[1]