怎样做网站手机和电脑通用,营销型网站设计建设,爱网站找不到了,html5个性个人网站所谓namespace#xff0c;是指标识符的各种可见范围。C标准程序库中的所 有标识符都被定义于一个名为std的namespace中。 一 #xff1a;iostream和iostream.h格式不一样#xff0c;前者没有后缀#xff0c;实际上#xff0c; 在你的编译器include文件夹… 所谓namespace是指标识符的各种可见范围。C标准程序库中的所 有标识符都被定义于一个名为std的namespace中。 一 iostream和iostream.h格式不一样前者没有后缀实际上 在你的编译器include文件夹里面可以看到二者是两个文件打开文件就会发现里面的代码是不一样的。后缀为.h的头文件c标准已经明确提出不支持了早些的实现将标准库功能定义在全局空间里声明在带.h后缀的头文件 里c标准为了和C区别开也为了正确使用命名空间规定头文件不使用后缀.h。 因此 1当使用iostream.h时相当于在c中调用库函数使用的是全局命名空间也就是早期的c实现 2当使用iostream的时候该头文件没有定义全局命名空间必须 使用namespace std这样才能正确使用cout。 最方便的就是使用using namespace std; 例如 using namespace std;这样命名空间std内定义的所有标识符都有效曝光。就好像它们被声明为全局变量一样。那么以上语句可以如下写: cout hex 3.4 endl;因为标准库非常的庞大所以程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名字相同。所以为了避免这种情况所造成的名字冲突就把标准库中的一切都被放在名字空间std中。但这又会带来了一个新问 题。无数原有的C代码都依赖于使用了多年的伪标准库中的功能他们都是在全局空间下的。所以就有了iostream.h 和iostream等等这样的头文件一个是为了兼容以前的C代码一个是为了支持新的标准。命名空间std封装的是标准程序库的名称标准程序库为了和以前的头文件区别一般不加.h namespace nA{} 不能定义在函数中 只能是全局变量 //当使用iostream.h时相当于在c中调用库函数使用的是全局命 //名空间也就是早期的c实现 //当使用iostream的时候该头文件没有定义全局命名空间必须 //使用namespace std这样才能正确使用cout。 //C定义变量随用随定义 //C中最好都定义在主函数开始位置 //C对全部变量的检测增强不可重复定义 //C语言中ok //C中的struct是⼀个新类型的定义声明 //C语⾔的struct定义了⼀组变量的集合C编译器并不认为这是⼀种新的类型 //如若没有typedef必须用struct进行变量声明 //C中所有的变量和函数都必须有类型 //C语⾔中的默认类型int在C中是不合法的 //C更加强调类型任意的程序元素都必须显示指明类型 //C在C语⾔的基本类型系统之上增加了bool //C中的bool可取的值只有true和false.理论上bool只占⽤⼀个字节 //true代表真值编译器内部⽤1来表⽰ false代表⾮真值编译器内部⽤0来表⽰ //bool类型只有true⾮0和false0两个值 //C编译器会在赋值时将⾮0值转换为true0值转换为false //C语言中的三目运算符返回的是变量值不能作为左值使用 //C中的三目运算符可直接返回变量本身因此可以出现在程序的任何地方可以作为左值 (a b ? a : b ) 50; //正确C中的三目运算符可直接返回变量本身,可以作左值 //(a b ? 10 : 20) 50; 10和20是自变量不能修改,没有内存地址 //C中的const修饰的是一个真正的常量而不是C中变量只读。在 //const修饰的常量编译期间就已经确定下来了 //C中的const常量与宏定义不同 //const常量是由编译器处理的提供类型检查和作用域检查 //宏定义由预处理器处理单纯的文本替换 //c 语言中枚举本质就是整型, 枚举变量可以用任意整型赋值。而 c中枚举 //变量, 只能用被枚举出来的元素初始化。 c语言.c 文件
#includestdio.h
#if 1
void test01() {int a 10;printf(%d\n, a);int b 20;
}
int g_val; //分配到bss段
int g_val 10;
void test02() {printf(%d\n, g_val);
}struct student1 {char name[64];int id;
};
typedef struct student2 {char name[64];int id;
};
typedef struct Student3 {char name[64];int id;
}student3;void test03() {struct student1 s1;//student2 s2; 错误student3 s3;
}f() {return 10;
}
void test04() {f(); //ok
}g(int a) {return a;
}
void test05() { g(10,20,30);//ok
}void test07() {int a 10;int b 20;int c 0;//左值 右值//左值//右值c a b ? a : b;printf(%d\n, c);//(a b ? a : b ) 50; 错误 (a b ? a : b)返回的是一个具体数值//1050; 错误*(a b ? a : b) 50; //(a b ? a : b) 返回的是a的地址 *a间接操作a的地址printf(a%d\n, a);printf(a%p\n, a);}
void test08() {/*const int a;int const a; //等价都表示a是一个常量 只读 不可修改 栈区const int *c;const int* c; //等价于(const int)*c;指针存放地址指向的内容不可以修改//指针指向可以修改int* const c; //等价于int(* const c); 指针指向是int指针本身是const//指针指向不可以改变但是指针存放地址指向的内容可以改变const int* const c; //指针指向不可以改变指针存放地址指向的内容不可以改变*/const int a 10; //a虽然用const修饰但是变量//int array[a] { 0 }; a是变量所以报错int *p a;*p 20;printf(%d, a); //20}enum season {Spring,Summer,Autumn,Winter1,Winter2,Winter3,Winter4,
};
void test09() {enum season s Winter3;if (s 5) {printf(%d, s); //5}s Winter4;if (s 64) {printf(%s, s);}
}
int main(void) {/*test01();test02();test03();test04();test05();test06();test07();test08();*/test09();return 0;
}
#endif
c语言.cpp:
//当使用iostream.h时相当于在c中调用库函数使用的是全局命//名空间也就是早期的c实现
//当使用iostream的时候该头文件没有定义全局命名空间必须//使用namespace std这样才能正确使用cout。//C定义变量随用随定义
//C中最好都定义在主函数开始位置//C对全部变量的检测增强不可重复定义
//C语言中ok//C中的struct是⼀个新类型的定义声明
//C语⾔的struct定义了⼀组变量的集合C编译器并不认为这是⼀种新的类型//如若没有typedef必须用struct进行变量声明//C中所有的变量和函数都必须有类型
//C语⾔中的默认类型int在C中是不合法的
//C更加强调类型任意的程序元素都必须显示指明类型//C在C语⾔的基本类型系统之上增加了bool
//C中的bool可取的值只有true和false.理论上bool只占⽤⼀个字节
//true代表真值编译器内部⽤1来表⽰ false代表⾮真值编译器内部⽤0来表⽰
//bool类型只有true⾮0和false0两个值
//C编译器会在赋值时将⾮0值转换为true0值转换为false//C语言中的三目运算符返回的是变量值不能作为左值使用
//C中的三目运算符可直接返回变量本身因此可以出现在程序的任何地方可以作为左值//C中的const修饰的是一个真正的常量而不是C中变量只读。在
//const修饰的常量编译期间就已经确定下来了
//C中的const常量与宏定义不同
//const常量是由编译器处理的提供类型检查和作用域检查
//宏定义由预处理器处理单纯的文本替换//c 语言中枚举本质就是整型, 枚举变量可以用任意整型赋值。而 c中枚举
//变量, 只能用被枚举出来的元素初始化。
#if 1
#includeiostream
using namespace std;
void test01() {int i 0;for (int i 0; i 10; i){}int b 20;cout b endl;
}
/*
int g_val;
int g_val 10; 重复定义ERROR
void test02()
{cout g_val endl;
}
*/struct student
{char name[64];int id;
};void test03() {student s1;
}/*
f() { //没有返回类型 错误return 10;
}
void test04() {f();//没有返回类型 错误g(10,20); //报错
}*//*
g(int a) {return a;
}
void test05() {g(10, 20); //报错 缺少参数
}*/void test06() {bool flag true;cout flag endl; //1flag false;cout flag endl; //0flag 3;cout flag endl; //1flag -3;cout flag endl; //1coutsizeof(flag): sizeof(flag) endl;
}void test07() {int a 10;int b 20;int c 0;//左值 右值//左值//右值cout a a endl; //10cout b b endl; //20c a b ? a : b;cout c endl; //20cout a a endl; //10cout b b endl; //20(a b ? a : b ) 50; //正确C中的三目运算符可直接返回变量本身,可以作左值cout a a endl; //10cout bb endl; //50
}void test08() {const int a 10; //a是真正的常量int array[a] { 0 }; //可以通过编译int *p (int*)a; //如果对常量取地址编译器会临时开辟一个空间temp指针指向temp*p 20; //改变的时临时开辟的temp变量cout a a endl; //10cout *p *p endl; //20
}enum season {Spring,Summer,Autumn,Winter1,Winter2,Winter3,Winter4,
};
void test09() {enum season s Spring;if(sSpring)cout s endl; //0
}
int main() {//test06();//test07();//test08();test09();
}#endif