时间:2021-05-20
1.C语言编码需要保证变长数组的长度参数位于合法范围之内
例如以下代码:
void func(size_t s) { int vla[s]; }func(size);解决方案如下:
enum {MAX_ARRAY = 1024};void func(size_t s) { if(s < MAX_ARRAY && s != 0) { int vla[s]; } else { //错误处理 }}func(size);2.需要保证复制的目标具有足够的存储空间
参考代码如下所示:
enum {WORKSPACE_SIZE = 256};void func(const int src[], size_t len) { int dest[WORKSPACE_SIZE]; if(len > WORKSPACE_SIZE) { //错误处理 } memcpy(dest, src, sizeof(int) * len); }3.不要把一个指向非数组对象的指针加上或减去一个整数
错误代码如下所示:
struct numbers { short num1; short num2; short num9;};int sum_numbers(const struct numbers *numb) { int total = 0; const int *numb_ptr; for(numb_ptr = &numb->num1; numb_ptr <= &numb->num9; numb_ptr++) { total += *(numb_ptr); } return total;}int main(void) { struct numbers my_numbers = {1,2,3,4,5,6,7,8,9}; sum_numbers(&my_numbers); return 0;}上面的代码试图用指针运算访问结构的元素,这是危险的,因为结构中的字段并不保证在内存中是连续的
解决方案(使用数组)如下:
struct numbers { short num1; short num2; short num9;};int sum_numbers(const short *numb, size_t dim) { int total = 0; const int *numb_ptr; for(numb_ptr = numb; numb_ptr < numb + dim; numb_ptr++) { total += *(numb_ptr); } return total;}int main(void) { short my_numbers[9] = {1,2,3,4,5,6,7,8,9}; sum_numbers(my_numbers, sizeof(my_numbers) / sizeof(my_numbers[0])); return 0;}声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文提供一款简单的js入门教程,这是一款js数组定义与数组长度实例教程,如果你正在学习js数组的话,我们这里告诉你如何定义数组以及增加数组与数组长度计算实例。先
概述对象实例由对象头、实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度;|类型|32位JVM|64位JVM||--------
本文实例讲述了php检测数组长度函数sizeof与count用法。分享给大家供大家参考。具体如下:在php检测数组长度的函数有sizeofcount下面看个简单
在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧。p
C语言指针与数组的详解及对比通俗理解数组指针和指针数组数组指针:eg:int(*arr)[10];数组指针通俗理解就是这个数组作为指针,指向某一个变量。指针数组