c语言变长数组的实现-创新互联
c语言变长数组的实现变长数组指的是数组的长度可以任意改变,而不是可以定义任意长度的数组
当前题目:c语言变长数组的实现-创新互联
URL链接:http://azwzsj.com/article/ddcjpg.html
这里给出他的写法
目前创新互联已为成百上千的企业提供了网站建设、域名、雅安服务器托管、网站改版维护、企业网站设计、额济纳网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。#include#includestruct ss
{int n; // 变长数组的长度
char a[0]; // 不可写为char *a, 否则会报错
// 注意这里的a[0]不占内存,但是*a占内存
// 因为sizeof(a) == 0, 所以需要一个n来给出当前变长数组的长度。
};
int main()
{ int n;
n = 10;
int saf[n]; // 这不是一个变长数组,因为一旦定义之后,就不能改变大小
printf("%ld",sizeof(saf));
// 定义变长数组大小为n
struct ss *b = (struct ss *)malloc(sizeof(struct ss) + n * sizeof(char));
b->n = n;
// 现在改变数组的长度
n = 100;
b = (struct ss *)malloc(sizeof(struct ss) + n * sizeof(char));
b->n = n;
char c[10] = "wfasfa";
memcpy(b->a,c,sizeof(c));
printf("%s\n",b->a);
// 变长数组的大小不能使用sizeof得到
printf("%ld\n",sizeof(b->a));
struct ss *d = (struct ss *)malloc(sizeof(struct ss) + 10 * sizeof(char ));
return 0;
}
参考自:
https://stackoverflow.com/questions/3607859/meaning-of-char-arr0
https://blog.csdn.net/hyqsong/article/details/50863746
https://blog.csdn.net/ligeforrent/article/details/48639277
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前题目:c语言变长数组的实现-创新互联
URL链接:http://azwzsj.com/article/ddcjpg.html