violate 关键字及其作用场景
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。
中断服务程序中修改的供其它程序检测的变量需要加volatile;
多任务环境下各任务间共享的标志应该加volatile;
存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;
冯诺依曼结构和哈弗结构区别
https://blog.csdn.net/fushiqianxun/article/details/7478941
删除字符串里面的重复字符
char* delchar(char *str, char a)
{
char *cp = (char *)malloc(10);
char *cp1 = cp;
while (*str != '\0')
{
if (*str != a)
{
*cp = *str;
cp++;
}
str++;
}
*cp = '\0';
return cp1;
}