求助一个指针初始值的问题
#include<stdio.h>int main()
{
int a = {23,15,50,3,21,20,35},b,*p,*q;
p = a;
q = b;
printf("Input 6 numbers:");
for (int i = 0; i < 7; i++)
{
printf("%-2d ",p);
}
printf("\n");
for (int i = 0; i < 7; i++)
{
*q = *p; q++; p++;
}
for (int i = 0; i < 7; i++)
{
printf("%d",q);
}
return 0;
}
第一个printf 输出23,15,50,3,21,20,35 这没问题
为什么第二个printf 输出是这样 0,23,15,50,3,21,20它前面这个0就很迷 本帖最后由 jackz007 于 2021-3-2 14:56 编辑
指针 q 原本指向数组 b 的开头,但是,到了第 18 行的时候, q 已经指向了数组 b 的末尾,继续使用 q[ i ] 已经不能访问到数组 b 的元素了。
所以,这一句
printf("%d",q);
得改成下面这样
printf("%d",b); 蒙了,我复制你的代码运行出来没问题啊,没有0啊
Input 6 numbers:23 15 50 321 20 35
2315503212035
Process finished with exit code 0 rororoya 发表于 2021-3-2 20:48
蒙了,我复制你的代码运行出来没问题啊,没有0啊
Input 6 numbers:23 15 50 321 20 35
哦哦,楼上说的对,我这个是因为 q的末地址刚好是p的起始地址,所以一样了,尴尬
页:
[1]