前言
提示:以下是本篇文章正文内容,下面案例可供参考
C++
1、引号
"
2、指针和整实型
指针变量是用来指示一个内存地址的变量,因此只能将地址赋给指针变量,而不能是整数或浮点数 整数通过强制类型转换后可赋值给指针变量,
要注意转换后的类型要和指针指向的类型一致,并且这个整数的位长不能超过指针的位长
3、strcpy
char s[ ]="abcdefgh",*p =s;
p += 3;
printf("%d\n",strlen
(strcpy(p,"ABCD")));
p +=3;后指向的内容为defgh,执行strcpy后p的内容为ABCD\0
strcpy(p,"ABCD”)的功能是将字符串”ABCD”复制到指针变量p所指向的内存
单元中,其返回值是指针p所指内存单元的地址,然后计算p所指字符串的长度,显然是4。
4、memmove()
memmove() 用来复制内存内容,其原型为: void * memmove(void *dest, const void *src, size_t num); memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝N个字节到目标dst所指的内存地址的起始位置中。 memmove函数的功能同memcpy基本一致,但是当src区域和dst内存区域重叠时,memcpy可能会出现错误,而memmove能正确进行拷贝。
5、fork()和printf()
printf()没有换行符会放在缓冲区等程序结束后由系统处理输出。如果fork()前父进程输出缓冲区内存在未输出对象,那么子进程会复制父进程的缓冲区。
6、char溢出后和int的计算
执行如下程序代码
char chr = 127;
int sum = 200;
chr += 1;
sum += chr;
后,sum的值是 ; ( )
对于c/c++语言来说:char是一个字节,第一位是符号位,chr在计算机中是补码形式存储,而正数的补码就是原码本身:0111 1111,chr+=1后,chr变为1000 0000,因为char类型的数据范围为0到127,实际上已经溢出了。
sum在计算机中存储形式是(假设当前编译器int为16位):0000 0000 1100 1000,接着算sum += chr,sum是16位的而chr是8位的,chr会自动转成16位的,按照按符号位扩展规则,前面补1111 1111,chr变成了1111 1111 1000 0000,于是在计算机内部是0000 0000 1100 1000和1111 1111 1000 0000相加,得到(1)0000 0000 0100 1000 ,第一个1舍去,1001000是72。
操作系统
1、LRU
总结
继续加油