重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
结构体数组删除和一般数组删除操作类似,把后面的数据往前移就行了,不过不太适用,参考一下就行了
浮梁网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。成都创新互联从2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。
#include stdio.h
#include string.h
void del(void *arr, int n, unsigned int size, int index) {
int i, j = index * size;
for (i = index + 1; i n; ++i) {
memcpy((void *)((char*)arr + j), (void *)((char*)arr + j + size), size);
j += size;
}
}
typedef struct foo {
int a, b;
}Foo;
int main() {
Foo f[3];
f[0].a = 0;
f[0].b = 0;
f[1].a = 1;
f[1].b = 1;
f[2].a = 2;
f[2].b = 2;
del(f, 3, sizeof(Foo), 1);
return 0;
}
memset((char*)test,0,sizeof(test));试试。我是这么做的·。 补充: 或许是for(i=o;i10;i++)memset((char*)test[i],0,sizeof(test[i]));//里面的i是你想要清空的那个变量 追问: 能详细讲解一下这两个地方吗(char*)test \sizeof(test) 回答: 函数原型:memset(void *, int, size_t);(char*)test 是第一个参数,表示test结构体的首地址test强制转化为char型的。sizeof(test)是计算test结构体的大小0表示清空。 追问: sizeof()里面的结构体可以用结构体指针代替吗? 回答: 应该不行·。sizeof()括号里是数据类型,所以貌似我上面写错。应该是memset((char*)test1[i],0,sizeof(test)); 追问: 好像我用指针也通过了,........竟然没报错,而且数据也确实清空了
结构体同样可以看做一个基本数据类型。
删除结构体数组中的一个值,就像删除一个普通数组中的值一样的。
普通数组的删除是将后面的数据向前移动,达到覆盖掉的效果
比如:a[4]要删除第二个元素。那么把a[1]
=
a[2];a[2]
=
a[3];
最后一个不要动,也最好别去访问它,就相当于把第二个元素删除了。
结构体跟上面类似,但是结构体是你自定义的数据,所以在定义中,你要给它重载赋值符号(也就是=),要不然赋值的过程中会出错
1、首先,我们写好整个函数的框架,也就是头文件和Main函数。
2、然后我们写上指针变量的类型。
3、然后我们输入星号标识符。
4、接下来我们输入指针变量名。
5、接下来分号结束。
6、接下来我们就可以将直接拿来使用。