新手c编程遇到问题

#include <stdio.h>

struct table

{

int num; //首地址

int size; //内存大小

int state; //状态,分配或者未分配(0表示未分配,1表示分配)

};

int main()

{

int i,m,size;

table a[5];

int state = 0;

printf("分别输入5个表项的大小\t地址\t是否已分配:\n");

printf("请输入要分配的内存空间大小:\n");

for(i=0;i<5;i++)

{

scanf("%d%d%d",&a[i].num,&a[i].size,&a[i].state);

}

scanf("%d",&m);

for(i=0;i<5;i++) //遍历5个分区,判断需要分配的空间是否小于分区内存大小,是就改变分区状态

{

if(m<=a[i].size)

state = 1;

}

printf("大小\t|首地址\t|是否已分配:\n");

for(i=0;i<5;i++)

{

printf("%d\t%d\t%d\n",&a[i].size,&a[i].size,&a[i].state);

}

return 0;

}

图片描述

在初始化结构体数组后,通过遍历判断是否存在有大小>=要分配的内存空间大小,存在就把是否已分配的 0改成1,但是遍历后结果是出现乱码,求解决!谢谢

回答:

printf("%d\t%d\t%d\n",a[i].size,a[i].size,a[i].state);

回答:

struct (语法错)

在定义table时用`struct table a[6]`,改了这一点就可以跑出正确的了。

C++支持`table`,但C不可以

printf

`scanf()`本质上是往某一地址存东西,要取得变量的地址

`printf`只要取到变量的值即可,不需要地址

至于printf要取值还是地址,看需求。

以上是 新手c编程遇到问题 的全部内容, 来源链接: utcz.com/p/195383.html

回到顶部