关于指针和数组关系不理解的地方
#include <stdio.h>int main()
{
int num[] = {1,2,3,4,5};
int* p = num;//数组名是数组的首地址
for(int i = 0; i < 5; i++)
{
printf("%d ",p); //这里想不通,该怎样理解?
}
return 0;
}
输出结果为:1 2 3 4 5
本帖最后由 4goodworld 于 2020-3-7 22:05 编辑
〃忝書γě渎ぐ 发表于 2020-3-7 21:25
大佬,我就是想知道指针那部该如何理解?
我简单示意下效果,如下面的表格样子
i=0,p的状态:
1 2 3 45
指针起初在这个位置↑
i=1,p的状态:
1 2 3 45
指针第二步在这个位置↑
i=2,p的状态:
1 2 3 45
指针第三步在这个位置↑
等等……
就这样依次类推,往下偏移,指到那儿,打印出该位置的值 本帖最后由 墨羽岚 于 2020-3-7 21:00 编辑
调用库函数<stdio.h>
定义整型函数main
{
定义一个整型数组num并将1,2,3,4,5这5个数字赋予其中;
定义一个整型数组p,通过指针将num中的元素传递给p;
定义一个整数i并把0赋初值给i,当i<5时执行以下循环体;并在每次执行后将i加1重新赋予给i;
{
输出p中i为下标的元素(p为1,以此类推)并在其后加上一个空格;
}
返回值为0;
} 墨羽岚 发表于 2020-3-7 20:48
就是将num数组里的值全部给p后再从最开始依次输出鸭
看结果我也能猜出,就是不知具体该如何理解。 〃忝書γě渎ぐ 发表于 2020-3-7 20:54
看结果我也能猜出,就是不知具体该如何理解。
我修改了我的评论,你看看能不能帮上你的忙 1.关于循环
for 循环的一般形式为:
for(表达式1; 表达式2; 表达式3){
语句块
}
它的运行过程为:
1) 先执行“表达式1”。
2) 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。
3) 执行完循环体后再执行“表达式3”。
4) 重复执行步骤 2) 和 3),直到“表达式2”的值为假,就结束循环。
上面的步骤中,2) 和 3) 是一次循环,会重复执行,for 语句的主要作用就是不断执行步骤 2) 和 3)。
“表达式1”仅在第一次循环时执行,以后都不会再执行,可以认为这是一个初始化语句。“表达式2”一般是一个关系表达式,决定了是否还要继续下次循环,称为“循环条件”。“表达式3”很多情况下是一个带有自增或自减操作的表达式,以使循环条件逐渐变得“不成立”。
http://c.biancheng.net/uploads/allimg/181228/13401Q911-0.jpg
2.关于索引
数组的索引是从0开始
希望对你有所帮助
dlnb526 发表于 2020-3-7 21:14
1.关于循环
for 循环的一般形式为:
大佬,我就是想知道指针那部该如何理解? dlnb526 发表于 2020-3-7 21:14
1.关于循环
for 循环的一般形式为:
指针为什么能做为数组呢,在C语言标准中有什么类似的标准是如何说的呢。 〃忝書γě渎ぐ 发表于 2020-3-7 21:26
指针为什么能做为数组呢,在C语言标准中有什么类似的标准是如何说的呢。
emmm 这个问题
编译器会自动判断你是取指针还是取值!!
我不知道C语言标准里有没有相应的说明。{:10_285:}
若果你的指针是索引形式,他就知道这是取索引值
如果你觉得很懵逼,可以用 p++ 的方法~
我也觉得这种方式很奇怪,但是有指针的语言编译器大多都支持这个特性~ 墨羽岚 发表于 2020-3-7 20:48
调用库函数
定义整型函数main
{
就是不知p; 这条的理解支撑,指针是怎么被当成数组的?
页:
[1]