网站制作外包是怎么做的,微信小程序模版,网站建设推广运营,学做标书的网站1.C中的内置数组类型 C中的数组是内置数据类型#xff0c;但不是基础数据类型而是构造数据类型#xff0c;是有限个相同数据、占据着连续物理存储空间的有序集合。而内置数据类型定义的下标运算符可以处理负值运算(只要在数组范围之内)#xff0c;这和vector及string的下标运…1.C中的内置数组类型 C中的数组是内置数据类型但不是基础数据类型而是构造数据类型是有限个相同数据、占据着连续物理存储空间的有序集合。而内置数据类型定义的下标运算符可以处理负值运算(只要在数组范围之内)这和vector及string的下标运算符要求是无符号整数不一样。比如 int a[10]{ 0 }; int *p a[2]; int jp[1]; // ja[3]; int kp[-2]; // ka[1]; C11引入begin()和end()(定义在头文件iterator中)两个非成员函数使用这两个函数可以获得数组的头指针和尾后指针。一般情况下碰到复杂的数组声明时采用的原则是从数组名开始从内到外从右到左依次结合分析。比如 int *ptr[10]; //声明一个指针数组数组里面含有10个整形指针 int (*ptr)[10]; //声明一个数组指针指针指向一个含有10个整形元素的首地址 int (ptr)[10]; //声明一个数组引用引用绑定的是一个含有10个整形元素的首地址 C规定不能使用数组或者vector去初始化数组但是可以允许使用数组的首指针和尾后指针去初始化vector比如 int a[10]{0}; vectorint vec(begin(a),end(a)); 对于多维数组遍历或者其他对象如string和vector对象使用范围for语句能够起到很好的效果。但是由于多维数组中只有最内层的是表示数据类型其他都是表示指针类型因此使用范围for语句遍历或修改多维数组的数据时将除最内层循环变量的其他所有循环变量都设置为引用类型。比如 int a[3][4][5]{0}; unsigned int cnt 0 ; for(auto i : a) for(auto j : i) for(auto k : j) kcnt: 2.string对象和C风格字符串 C为了兼容C中的字符串将C中处理字符串的函数文件string.h变为cstring文件其中string.h中常用的处理字符串的函数有 strlen(p) //获取字符串的长度末尾\0不计算在内 strcmp(p1,p2); //比较两个字符串的大小p1p2,返回0p1p2,返回正值p1p2:返回负值 strcat(p1,p2); //将字符串p1和字符串p2拼接返回p1(必须保证p1的内存能够完成这个操作) strcpy(p1,p2): //将字符串p2拷贝给p1返回p1(必须保证p1的内存能够完成这个操作) string中为了兼容C字符串允许使用字符串字面值来初始化或赋值给string对象同时允许在string对象的加法运算中一个对象为字符串字面值。除此之外string中提供一个c_str()的成员函数来得到string对象对应的C风格字符串。