c++ 定义了一个结构体数组

typedefstruct_TEST_{charp1;cahrp2;char*p3;}TEST;TESTtest=newTEST[100];test.p3=newchar... typedef struct _TEST_
{
char p1;
cahr p2;
char *p3;
}TEST;

TEST test = new TEST[100];
test.p3 = new char;
这样给p3开辟空间对吗?
如何给p3开辟一个动态的空间?
不好意思,因为太急了所以写错了,应该是 TEST * test = new TEST[100];
test.p3 = new char;
给p3赋值的长度不一样,因为我用的数据长度是不确定的,所以刚开始test.p3 = new char这样开辟时。赋值的时候,第一条数据是对的,p3里存了6个数,可是到了第二条的前8个数是对的,可是到后面就错了(第二条长度为45);不知道为什么会这样;
我用memcoy(*test[i], pBff, Length);i为我循环的变量,pbff是读取来的数据,length是数据的长度
展开
 我来答
likeit2019
2011-09-03 · TA获得超过680个赞
知道答主
回答量:148
采纳率:0%
帮助的人:76.1万
展开全部
new函数返回的是一个指针,而你的test是一个结构体。
编译肯定过不了。
你可以定义一个TEST的指针,通过指针开辟存储空间。
typedef struct _TEST_
{
char p1;
char p2;
char *p3;
}TEST;
TEST *p=new TEST[100];
p->p3=char;
需要说明的是
这个语句
TEST *p=new TEST[100];
给p用new分配 TEST[100]的空间大小是无意义的
除非你你直接定义一种类型的指针
因为p局限于结构体类型大小
liuyonggyah
2011-09-03 · 超过45用户采纳过TA的回答
知道答主
回答量:212
采纳率:0%
帮助的人:117万
展开全部
1TEST test = new TEST[100];这句话会报错吧,new开辟一段内存会返回所开辟空间的首地址,这个与test类型不对应,?2至于test.p3 = new char;这样写实际是p3作为new char的地址,3要给p3开辟空间,4你可以设个p3的指针,5不过为p3开辟空间要做什么呢? !!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
williamthu
2011-09-03
知道答主
回答量:98
采纳率:0%
帮助的人:22.3万
展开全部
首先TEST test = new TEST[100];这句话会报错吧,new开辟一段内存会返回所开辟空间的首地址,这个与test类型不对应,至于test.p3 = new char;这样写实际是p3作为new char的地址,要给p3开辟空间,你可以设个p3的指针,不过为p3开辟空间要做什么呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chiconysun
2011-09-03 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:2613万
展开全部
差不多吧,不过test指向是一个数组,需要用指针,
TEST * test = new TEST[100];
由于test不是对象,所有要有下标:
test[2].p3 = new char('A'); 单独变量也可以同时初始化
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mfh1188
2011-09-03 · 超过11用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:34.4万
展开全部
new函数返回的是一个指针,test是一个数组
#include "stdio.h"

typedef struct _TEST_
{
char p1;
char p2;
char *p3;
}TEST;

int main()
{
TEST *test = new TEST[100];
test[2].p3 = new char('A');
printf("%s",test[2].p3);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式