结构体数组地址作为函数参数输出的困惑
结构体数组A内有几个结构,想通过函数以指针的形式作为参数传递给另一个结构体B数组,但是输出的只有结构体数组A的第一个结构体,后面的nana,nana,nana的成员没输出以下为程序:
#include <iostream>
using namespace std;
struct student {
int score;
int age;
}*ssss;
static student* nana;
int neo(student* qqqq)
{ int i;
for (i = 0; i < 4; i++)
{if (!nana)
{ cout << " nana[" << i << "] = " << nana << endl;
nana = qqqq;
cout << " nana[ " << i <<" ] =" <<nana->score << endl;
cout << " nana[ " << i <<" ] ="<< nana->age << endl;
return i;
}
};
return -1;
};
using namespace std;
static int i;
int main()
{
student aa = { {1,2},{3,4},{5,6},{7,8} };
neo(aa);
return 0;
}
本帖最后由 古月不傲 于 2021-1-30 15:16 编辑
#include <iostream>
using namespace std;
struct student {
int score;
int age;
}*ssss;
static student* nana;
int neo(student* qqqq)
{
int i;
for (i = 0; i < 4; i++)
{
if (!nana)
{
cout << " nana[" << i << "] = " << nana << endl;
nana = qqqq;
cout << " nana[ " << i <<" ] =" <<nana->score << endl;
cout << " nana[ " << i <<" ] ="<< nana->age << endl;
qqqq++;
}
};
return 0;
};
int main()
{
student aa = { {1,2},{3,4},{5,6},{7,8} };
neo(aa);
return 0;
}
return的含义都忘了吗? 古月不傲 发表于 2021-1-30 15:13
#include
using namespace std;
嗯 ,请赐教,这个确实不懂 silverviolet 发表于 2021-1-30 15:25
嗯 ,请赐教,这个确实不懂
return 代表函数结束了,neo(aa)继续往下执行 silverviolet 发表于 2021-1-30 15:25
嗯 ,请赐教,这个确实不懂
链接: https://pan.baidu.com/s/1nFk6eVT1JnBOH-ot9LpQ_g密码: 891s
录制了一个视频,你自己看下 碰到return,函数结束返回,只执行一次函数就结束了,肯定只打印一个 本帖最后由 silverviolet 于 2021-1-30 20:12 编辑
古月不傲 发表于 2021-1-30 15:45
链接: https://pan.baidu.com/s/1nFk6eVT1JnBOH-ot9LpQ_g密码: 891s
录制了一个视频,你自己看下
谢谢您的指导,对于结构体数组for语句循环体外添加return i才能把循环体内循环完毕,明白了,如果是结构体不是以数组方式存入那么就可以在for的大括号内循环了。
还有个就是结构体的指针qqqq++也很重要,这个是我没想到过的,只是我很困惑 对于下面这段if(!p_array_lcd_controller)括号内的参数,p_array_lcd_controller是结构体指针数组地址吧,那!p_array_lcd_controller的意思是什么呢?
#define LCD_CONTROLLER_NUM 10
static p_lcd_controller p_array_lcd_controller;
static p_lcd_controller g_p_lcd_controller_selected;
int register_lcd_controller(p_lcd_controller plcdcon)
{
int i;
for (i = 0; i < LCD_CONTROLLER_NUM; i++)
{
if (!p_array_lcd_controller)
{
p_array_lcd_controller = plcdcon;
return i;
}
}
return -1;
}
本帖最后由 古月不傲 于 2021-1-31 00:42 编辑
silverviolet 发表于 2021-1-30 20:08
谢谢您的指导,对于结构体数组for语句循环体外添加return i才能把循环体内循环完毕,明白了,如果 ...
这个和上面的一样,是个指针数组,判断的还是里面的指针要为空的(说是空的,其实静态默认初始化为0,0取反条件就成立),才把指针赋值给它 古月不傲 发表于 2021-1-31 00:25
这个和上面的一样,是个指针数组,判断的还是里面的指针要为空的(说是空的,其实静态默认初始化为0,0取 ...
是不是说p_array_lcd_controller数组指针这个的地址的内容其实就是0,因为没有初始化,然后前面的!取反就是这个地址的内容!0就是真的,我把数组指针的地址和指针的地址上的内容输进去,发现好像只有地址上的内容为0能解释的痛,不然判断指针是否=0有点奇怪。 本帖最后由 古月不傲 于 2021-1-31 23:57 编辑
silverviolet 发表于 2021-1-31 23:17
是不是说p_array_lcd_controller数组指针这个的地址的内容其实就是0,因为没有初始化,然后前面的 ...
判断的是指针是否为0,还是模模糊糊的话,说明你并不理解,请善用VS的调试技巧,需要不断的测试,才是你心中的结果。
页:
[1]
2