结构体和指针是数据结构的根基,所以这篇博客这算是对结构体有一个重新的认识,主要内容包括:匿名结构体、结构体的自引用、结构体的不完整声明、结构体内存对齐、位段的使用、联合体的应用场景等等。
可以使用
file
命令,并添加 -i
或 --mime
参数来查看一个文件的字符编码,但是这种查看编码的方式并不是准确,比如我在CentOS7.3 测试的时候它把GBK编码的文件识别成了ISO8859-1,所以最好是自己明白文件的原始编码。
其中 servlet规范包括三个技术点:servlet listener filter
监听器就是监听某个对象的的状态变化的组件
监听器的相关概念: 事件源:被监听的对象 —– 三个域对象 request、session、servletContext 监听器:监听事件源对象 事件源对象的状态的变化都会触发监听器 —6+2 注册监听器:将监听器与事件源进行绑定 响应行为:监听器监听到事件源的状态变化时 所涉及的功能代码 —程序员编写代码
第一维度:按照被监听的对象划分:ServletRequest域 HttpSession域 ServletContext域 第二维度:监听的内容分:监听域对象的创建与销毁的 监听域对象的属性变化的
先上一段看来比较正常的代码:
c#include<stdio.h>
#include<stdlib.h>
int main(void){
printf("Tim\n");
int a = 10;
printf("a = %d\n",a);
system("pause");
return 0;
}
由于我的环境是VisualStudio2013,所以上述程序可以完美执行,并且是编译0警告通过,但是在VisualStudio2008的环境下这样写是完全错误的,C89规定,在任何执行语句之前,在块的开头声明所有局部变量。但是在C99以及C++中则没有这个限制,即在首次使用之前,可在块的任何位置都可以声明变量。例如下面的写法对于C89标准才是正确的:
c#include<stdio.h>
#include<stdlib.h>
int main(void){
printf("sssssssss\n");
{
int a = 10;
printf("a = %d\n", a);
}
system("pause");
return 0;
}
当然为了达到更好兼容性,建议都把局部变量写在代码块的开始位置!!