1、串长度是指串中所有字符的个数。
字符串的两种基本存储方式是顺序存储和链式存储,字符串或串是由零个或多个字符组成的优先序列,是编程语言中表示文本的数据类型。通常串的整体作为操作对象。
2、在给定文件中查找与设定条件相符字符串的命令为?grep
Grep命令作为一种强大的文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来。grep 全称 Global Regular expression print,表示全局正则表达式版本,它的使用权限是所有用户。 Find只能匹配单个字符。
Grep查找字符串,find用来查找字符。
3、
char *p1=”123”, *p2=”ABC”,str[50]=”xyz”;
Strcpy(str+2,strcat(p1,p2));
Printf(“%s\n”,str);
程序输出出错。
分析:p1和p2都指向常量字符串,在常量区,所有不能对其进行操作。常量指针,可以改变它指向的地址,不能改变指向的内容。
4、设栈的初始状态为空,当字符序列a3_作为栈的输入时,输出长度为3的且可以用作C语言标识符的字符串序列有3个。
分析情况:
思路一) 共有 a3_ 、a_3、 3a_、3_a、_3a,去掉以3开头的2个,所以有3个。
思路二)卡特兰数公式h(n)=C(2n,n)/(n+1),适用于出栈情况求和。则所有输出总数为5次,去掉不符合情况的2次,剩下3个序列。
5、静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加。
(静态链表是用数组存储节点数据,模拟链表实现,但是没有用到指针。每个数组节点包括data域和cursor域。Data域存储数据,cursor指明下个元素在数组中的下标。)
存取第i个元素时,需要从头遍历到i-1和元素,由第i-1个节点的cursor,才能知道第i个元素存储的位置,因此 与i相关。
使用数组对元素进行存储,在定义时大小已经确定。
插入和删除操作无需移动元素,只需要修改cursor游标的值即可,就像修改动态链表中的指针一样。
6、栈具有记忆功能。因为栈是后进先出,可以保留前面的元素,所以称其有记忆功能。
7.数组可以直接通过下标得到存储的值,因此支持随机;访问链表是链式存储结构时无法支持随机访问,要访问一个指定位置元素,必须从头开始做指针移到。
哈希表支持直接通过关键码得到值,其实数组就是一种哈希表,下标就是哈希码,通过下标直接得到值,因此哈希表肯定需要做范围检查,也有办法做范围检查。
8、
初始化数据段存放初始化的全局变量(全局静态变量);
非初始化数据段存放未初始化的全局变量;
栈存放自动变量和函数调用信息;
堆存放动态存储数据;
a全局变量,放在全局区;
*str是常量字符串放在文字常量区,str放在全局区;
*b 和 *obj对象是new出来的,放在堆区,指针b和obj放在栈区;
c,obj2,aa是局部变量,lhs,rhs是函数参数值,都放在栈区。
9、二维数组必须制定列的数量,行的数量可以不指定。
10、32位操作系统中,定义**a[3][4],则变量占用内存空间为48
分析:a是一个数组,大小为3*4,数组中存放着指针的指针,在32位系统下,指针大小为4B,所以结果为4*3*4=48.
分析二: **a[3][4]:这是个3行4列的指向指针的指针数组,也就是说3行4列中存储的都是指针,那么所占内存空间是:3*4*4=48
分析三:指向数组的指针是4字节,如果是指向数组的指针应该是(*a)[3][4];
(**a)[3][4]:指向数组的指针的指针,也是4字节。这里是指针数组,也就是12*4=48;
11、静态变量放在程序的全局数据区,而不是在堆栈中分配,所以不可能导致堆栈溢出。
Static表示“全局”、“静态”的意思,用来修饰成员变量和成员方法,也可以形容静态static代码块,但是java语言中没有全局变量概念。
被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。
只有这个类被加载,java虚拟机就能根据类名在运行时数据区的方法区内找到它们。因此static对象可以在它的任何对象创建之前访问,无需引用任何对象。
静态全局、全局、静态局部在java中都一个意思。
可重入:指发生“当一个函数正执行到中间某步时,另一道程序又从该函数开头开始执行”的情况,函数的几个不受影响。