结构体指针数组怎么初始化?
发布网友
发布时间:2022-04-23 12:40
我来回答
共4个回答
热心网友
时间:2023-10-05 05:02
(1)
int a[]={1,2,3,4,5}; //OK
(2)
int a[5];
a={1,2,3,4,5};
//ERROR
结论:对于数组用大括号{}的赋值方式只是在定义的时候适用
否则必须用循环的方式
结构体初始化(方法一)
using
namespace std;
struct S{
int i;
float f;
};
struct S
s={10,15.5};//使用{}的正确方式
如果改成
struct S
s;
s={10,15.5};就不行
方法二(通行的方法)
从Ucos_ii.c内核代码中学到的
OS_MemClr((INT8U
*)&OSTCBTbl[0],sizeof(OSTCBTbl));Clear all the
tcb
下面是给结构体数组清零的函数,实质是将结构体占据的内存区域视为字符变量区域
,用循环对单个内存字节单元的清零来实现对结构体占据的内存区域即(结构体)的清零
void
OS_MemClr (INT8U *pdest, INT16U size)
{
while (size > 0) {
*pdest++
= (INT8U)0;
size--;
}
}
注意函数OS_MemClr中的强制类型转换 INT8U
(*)&OSTCBTbl[0],
目的是将结构体指针转化成字符型指针,对单个内存单元的清零(*pdest++ =
(INT8U)0;),来完成对结构体的清零(或者是结构体数组)
热心网友
时间:2023-10-05 05:02
#include<iostream>
using namespace std;
#define MAX 27
typedef struct
{
char x;
int y;
}Quan,*QQuan;
void main()
{
QQuan a[MAX];
for(int i=0;i<MAX;i++)
{
a[i]=new Quan;
a[i]->x='0';
a[i]->y=0;
}
for(i=0;i<MAX;i++)
{
cout<<a[i]->x<<"\t"<<a[i]->y<<endl;
}
}
自己看吧,相信你会看懂的,关键的一点就是new分配指针空间。
热心网友
时间:2023-10-05 05:03
for(i=0;i<MAX;i++)
{
a[i]=(QQuan)malloc(sizeof(Quan));
memset(a[i],0,sizeof(Quan));
}
需要引用<string.h>和<stdlib.h>头文件
热心网友
时间:2023-10-05 05:04
//QQuan a[MAX]是指针数组,不可能如你所说的初始化。
//Quan a[MAX]最前面少一个Q,才可以如你所说初始化,下面是测试程序。
#include <stdio.h>
#define MAX 27
typedef struct
{
char x;
int y;
}Quan,*QQuan;
void main()
{
Quan a[MAX]={{0,0}};
int i;
for(i=0;i<MAX;i++)
printf("%c%d\n",a[i].x ,a[i].y);
}
结构体中的指针数组怎么初始化为NULL
如果是全局的(在函数外面)本身都已经初始化为NULL了 如果不是全局的写个for循环,把每个元素赋值为NULL就行了
C语言数组的初始化表示方法
不是inta[] 而是例如int a[10]这种。括号内一定要有个常量数字。我们可以这样定义 define N 5 int a[N]这表明了数组名为a;数组有5个元素;分别是a[0]到a[4];对于数组来说;数组是变量的集合,因此数组也具有与变量相同的数据类型和储存类型。数组的类型就是它所有的变量的类型。在定义数组...
C++ 如何将一个静态结构体数组初始化?
结构体也可以有构造函数,用默认构造函数就可以在new数组的时候初始化。如果需要成员有初始值,则需要写构造函数,否则直接memset初始化为0即可。参考如下:struct _tagA { int a1;_tagA(){a1 = 1;} }a[100];memset(&a, 0, sizeof(a));...
C语言(数据结构)顺序表的初始化
肯定是要分配空间的,你第一个程序的initsqlist函数中声明的结构体指针(Sqlist *a;),而第二个程序的initsqlist函数中是声明的结构体(Sqlist a;),前者只是在计算机内存中声明一个指针,而不会给这个指针分配内存空间,所以你初始化的时候要给这个指针用malloc函数分配空间,而后者是实实在在的定...
如何对结构体变量进行初始化?
也可以采取申明类型与定义变量分开的形式,在定义变量时进行初始化:student student1 = {10001,"zhangxin"} 。在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些...
c语言结构体数组赋值
(1)用字符常量逐个初始化数组。例如:char a[8]={'i','l','o','v','e','y','o','u'};把8个字符依次分别赋给c[0]~c[7]这8个元素。如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现...
...类型的数据初始化为0,如数组、结构体等等,指针可以吗?
指针用NULL初始化。
C语言结构体(struct)用法详解
结构体初始化常用于同时定义变量并赋予初始值,先定义再初始化和常用初始化方法有所不同。在处理复杂结构体时,通常先清零所有成员,再按需填充。结构体定义时,有时需要typedef简化类型,如`typedef struct _stu STU;`。对于成员引用,可以使用重新定义的类型,这时可能需要前置声明。结构体的对齐可以通过#...
一些有关C语言中实用且很牛的技能!
为了确保数组保持了最新的定义,无论头文件做了任何修改或增补,我们都可以用这个数组指定的语法。 这样就可以静态分配足够的空间,且保证最大的索引是合法的,同时将特殊的索引初始化为指定的值,并将剩下的索引初始化为0。 三、结构体与联合体 用结构体与联合体的字段名称来初始化数据是非常有用的。假设我们定义:...
C高手请进!!如何给结构体中的字符数组赋初值?
char数组赋值不可以这样,当然如果是定义时候就给初始值的时候是可以的 可以使用strcpy函数 typedef struct FileName { char fn[15];struct FileName *next;}*pFhead;strcpy(pFhead->fn,"Common Numbers");当然要考虑长度的问题,否则会出错