鱼C论坛

 找回密码
 立即注册
查看: 2889|回复: 5

指针数组定义位置问题

[复制链接]
发表于 2021-6-20 19:29:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
先上代码
  1. void main()
  2. {
  3.     int *a ;
  4.     int *b ;
  5.     int *c ;
  6.     int *d ;
  7.     int *e ;
  8.     int h = 7;
  9.     int *num[5] = {a, b, c, d, e};//err-------- 位置1
  10.     int i;

  11.     a = &h;
  12.     b = &h;
  13.     c = &h;
  14.     d = &h;
  15.     e = &h;
  16.     //int *num[5] = {a, b, c, d, e};//ok ------- 位置 2


  17.     for(i = 0; i< 5; i++)
  18.     {
  19.         printf("%d\n", *num[i]);
  20.     }
  21. }
复制代码


当对指针数组在位置1进行定义时, 输出啥也没有,
而在位置2定义时,则可以正常输出都是7.

我认为指针数组内的元素都是指针,也就是地址,
在位置1处定义时,指针abcde的指向的位置是都没有的,
但是位置1下面也对这几个指针进行位置的赋值,
按说数组num中元素的也就可以确定了,
可为啥输出来还是啥都没有了?

求大神解释!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-6-20 20:27:10 | 显示全部楼层
存的是地址呀 ,又不是这些指针变量

你初始化只是把值赋给这个数组   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-20 23:53:40 | 显示全部楼层
万千只cnm 发表于 2021-6-20 20:27
存的是地址呀 ,又不是这些指针变量

你初始化只是把值赋给这个数组

后面我不是把指针指向了确切的地址嘛,为啥还是不行了,a= &h这个,谢谢大神回复
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-21 00:11:23 | 显示全部楼层
小木刺客 发表于 2021-6-20 23:53
后面我不是把指针指向了确切的地址嘛,为啥还是不行了,a= &h这个,谢谢大神回复

对啊  指针变量a的值变了

指针数组里面存的是地址,不是变量呀
int *num[5] = {a, b, c, d, e};
初始化只是把对应地值(地址)拷贝过去了   ,并不是把这些变量存进去了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-21 00:21:11 | 显示全部楼层
小木刺客 发表于 2021-6-20 23:53
后面我不是把指针指向了确切的地址嘛,为啥还是不行了,a= &h这个,谢谢大神回复

就像整型数组  
int a[10];
for(int i = 0;i<10;i++)
    a[i]=i;
   循环赋值
再让i=1000000000;
难道i变了 a数组元素值会变吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-21 09:15:43 | 显示全部楼层
把指针赋值提前
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-27 15:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表