C字符串长度定义规范
C字符串长度定义规范
(转载请注明来源于金庆的专栏)
因为总是见到C字符串长度相关的错误, 所有定个规范出来, 有利于减少错误.
关键在于C字符串有个结尾0, 处理时需要注意.
定义字符串长度有两种方式, 一种是用字符串的大小, 一种是字符串的长度.
字符串的大小即内存空间的大小, 而串长度加1才是所需空间.
例 “hello”共5个字符,在内存占6个字节 字符串长度5
也就是说sizeof()和strlen()的区别。
正确:
char str[MAX_SIZE];
char str[MAX_LEN + 1];
错误:
char str[MAX_SIZE + 1];
char str[MAX_LEN];
如strncpy()之类的函数处理字符串时, 如果要省略结尾0时, 应如下:
strncpy(dst, src, MAX_LEN);
或
strncpy(dst, src, MAX_SIZE - 1);
相关文档:
C++/C试题
本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。
笔试时间90分钟。请考生认真答题,切勿 ......
这是入门篇中提到的那两题:
int * (* (*fp1) (int) ) [10];
int *( *( *arr[5])())();
解答如下
1.int * (* (*fp1) (int) ) [10];
从外往内进行分析
a.typedef P=(* (*fp1) (int) ),那么原声明改写为 int*P[10],这是一个有10个元素的数组,每个元素都是一个指向整型数的指针
b.typedef Q=(*fp1),那么P改写为 *Q( ......
一、一个经过编译的C/C++的程序占用的内存分成以下几个部分:
1、栈区(stack):由编译器自动分配和释放 ,存放函数的参数值、局部变量的值等,甚至函数的调用过程都是用栈来完成。其操作方式类似于数据结构中的栈。
2、堆区(heap) :一般由程序员手动申请以及释放, 若程序员不释放,程序结束时可能由OS回收 ......
在使用C语言编写大型工程时要用到面向对象语言中的一些特性(内核中某些部分就应用了这些特性)。C语言是基于文件的类,static关键字声明私有数据成员,公有数据成员必须定义到头文件,或由其它文件使用extern关键字声明来使用。但后者引用关系不清晰。头文件就成了公有数据成员声明的地方。
头文件中应该包含以下及方面内 ......