指针数组和数组
# include <stdio.h>void main()
{
int a={9,8,7,6,4,5,63,52,14,53};
int *b;
int i;
*b=a;
for(i=0;i<10;i++)
printf("%d\n",b);
}
、
语法没错 怎么输出有错
那里错了呀{:5_99:} 我学的C++,C的输出语句我不懂,但指针数组*b表示数组b里有10个指针元素,那么*b=a;这条语句是不是有问题? 只爱你一人 发表于 2014-12-6 15:01
我学的C++,C的输出语句我不懂,但指针数组*b表示数组b里有10个指针元素,那么*b=a;这条语句是不是有问 ...
应该不会把*b是一个一级指针*b[]这里面的b 是一个二级指针 本帖最后由 Victory_6226 于 2014-12-6 23:39 编辑
int *b是代表指针数组啊,表示10个指针
printf("%d\n",b)这句只能打印出第一个元素b的指向的数组名a的地址吧,其他9个都是野地址吧,你可以验证下如下代码
# include <stdio.h>
void main()
{
int a={9,8,7,6,4,5,63,52,14,53};
int *b;
int i;
*b=a;
printf("%d\n",a);
for(i=0;i<10;i++)
printf("%d\n",b);
getchar();
}
数组名是其第一个元素的地址,那么对指针数组b 解引用(*b)得到的就是它的第一个元素 b的地址
*b = a;这句实际上是把数组a 赋给了b,
那么b,b,b……它们都没有正确的值(你定义指针时没有初始化),也就是楼上的大大说的野值!
只爱你一人 发表于 2014-12-7 11:48
数组名是其第一个元素的地址,那么对指针数组b 解引用(*b)得到的就是它的第一个元素 b的地址
*b = a; ...
嗯后来又想通了谢谢拉 用指针实现
#include <stdio.h>
void main()
{
int a={9,8,7,6,4,5,63,52,14,53};
int i;
int *b= a;
for(i=0;i<10;i++)
printf("%d\n",b);
}
用指针数组实现
#include <stdio.h>
void main()
{
int a={9,8,7,6,4,5,63,52,14,53};
int *b;
int i;
for(i=0;i<10;i++)
{
b = &a;
printf("%d\n",*b);
}
}
学习 风之残月 正解
风之残月 确实是正解 多看求助贴,涨知识{:5_108:}
页:
[1]