当前位置: 首页 > news >正文

网站建设主要干什么百度做网站推广多少钱

网站建设主要干什么,百度做网站推广多少钱,网站建设策划书事物选题,机械加工网厂目录 一、前言 二、static关键字是什么#xff1f; 三、static关键字修饰的对象是什么#xff1f; 四、C 语言中的 static #x1f34e;static的C用法 #x1f349;static的重点概念 #x1f350;static修饰局部变量 #x1f4a6;static在修饰局部变量和函数的作用 三、static关键字修饰的对象是什么  四、C 语言中的 static static的C用法 static的重点概念 static修饰局部变量 static在修饰局部变量和函数的作用 static修饰全局变量和函数 static在修饰全局变量和函数的作用 五、C中的 static static的C用法 static在C中的重点概念 静态成员为所有类对象所共享不属于某个具体的实例 静态成员变量必须在类外定义定义时不添加static关键字 静态成员函数没有隐藏的this指针不能访问任何非静态成员 访问静态成员变量的特殊方式 静态成员和类的普通成员一样也有public、protected、private3种访问级别也可以具有返回值 六、static面试题 七、static OJ面试题 八、共勉 一、前言 static中文意思是静态的作为C/C中常用关键字中的一个很重要的关键字其中用法多样且复杂难以理解用起来总是丈二和尚摸不着头脑把我折磨的一头雾水主要是博主很菜。         也许大家对于这些知识都是一知半解除过一些大佬没有真正的搞透澈一问我都会这就是我但是真正引用的时候就会出现很多问题而且百度的时候大部分都讲得不是很清楚所以为了帮助大家解决这个问题实际上是自己不会在这里进行一个全面的static介绍和总结。         本文将会循序渐进先从C语言的static讲起慢慢延申到C从易到难每一步都会举一些通俗易懂的例子帮助大家理解帮助自己理解怕忘记好了开始整活 二、static关键字是什么 static是 C/C中的关键字之一是常见的函数与变量C中还包括类的修饰符它常被用来控制变量的存储方式和作用范围。 在众多高级语言中都有其作为关键字或函数出现所以这也是应当被程序员熟知其各种含义的一个单词 三、static关键字修饰的对象是什么  1.局部变量 2.全局变量 3.函数 四、C 语言中的 static static的C用法 1️⃣: 修饰局部变量称为静态局部变量     2️⃣: 修饰全局变量称为静态全局变量     3️⃣: 修饰函数称为静态函数 static的重点概念 1️⃣在函数中声明变量时 static 关键字指定变量只初始化一次并在之后调用该函数时保留其状态。 2️⃣在声明变量时变量具有静态持续时间并且除非您指定另一个值。 3️⃣ 在全局和/或命名空间范围 (在单个文件范围内声明变量或函数时) static 关键字指定变量或函数为内部链接即外部文件无法引用该变量或函数。 4️⃣static 关键字 没有赋值时默认赋值为 0  5️⃣static修饰局部变量时会改变局部变量的存储位置从而使得局部变量的生命周期变长。⭐接下来将重点讲解上面三个作用个五点概念的理解和应用 static修饰局部变量 1️⃣在函数中声明变量时 static 关键字指定变量只初始化一次并在之后调用该函数时保留其状态。 5️⃣static修饰局部变量时会改变局部变量的存储位置从而使得局部变量的生命周期变长。 接下来用们用一段代码来进行解析 #include stdio.h #include stdlib.h void test() {int x 0;x;printf(%d , x); } int main() {int i 0;printf(%d\n, i);while (i 10){test();i;}return 0; }         这段代码中每次调用test函数时创建局部变量x赋值为 0每次局部变量x出了test函数后都会自行销毁。         所以可以很容易得到输出结果为1 1 1 1 1 1 1 1 1 1         接着我们用上static关键字来修饰  test函数中的局部变量 x #include stdio.h #include stdlib.h void test() {static int x 0;x;printf(%d , x); } int main() {int i 0;while (i 10){test();i;}return 0; }         输出结果变成了1 2 3 4 5 6 7 8 9 10         原因是static修饰了局部变量x令局部变量x变成静态的且只能初始化一次使得每次test函数结束时局部变量x都不销毁再次进入test函数时则保留原有数值运行因此x数值越来越大。 ⭐总结 1static关键字修饰局部变量不改变作用域但是生命周期变长。 2本质上static关键字修饰局部变量改变了局部变量的存储位置因为存储位置的差异使得执行效果不一样。普通的局部变量放在栈区这种局部变量进入作用域创建出作用域释放。局部变量被static修饰后成为静态局部变量这种变量放在静态区创建好后直到程序结束后才释放。   4️⃣static 关键字 没有赋值时默认赋值为 0  接下来用们用一段代码来进行解析 int a; int main() {char str[10];printf(integer: %d; string: (begin)%s(end)\n, a, str);return 0; }         在这段代码中我们并没有对全局变量 a 和字符串数组 str 进行赋值所以在输出时会出现随机值的现象。所以很容易得到如下的结果 输出 integer: 0; string: (begin)烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫攼l(end) ⚠ 注意a 输出为 0 是因为 此时 a 是全局变量也存放在静态区所以可以默认值为 0 .         接着我们用上 static关键字 来修饰 全局变量 a 和字符串数组 str  static int a; int main() {static char str[10];printf(integer: %d; string: (begin)%s(end)\n, a, str);return 0; }   输出 integer: 0; string: (begin)(end)⭐总结          static的另一个作用是默认初始化为0。其实全局变量也具备这一属性因为全局变量也存储在静态数据区。在静态数据区内存中所有的字节默认值都是0x00某些时候这一特点可以减少程序员的工作量。比如初始化一个稀疏矩阵我们可以一个一个地把所有元素都置0然后把不是0的几个元素赋值。如果定义成静态的就省去了一开始置0的操作。再比如要把一个字符数组当字符串来用但又觉得每次在字符数组末尾加‘\0’;太麻烦。如果把字符串定义成静态的就省去了这个麻烦因为那里本来就是 ‘\0’。   static在修饰局部变量和函数的作用 ⭐作用         保持变量内容的持久 static的第一个作用是保持变量内容的持久即static变量中的记忆功能和全局生存期。存储在静态数据区的变量会在程序刚开始运行时就完成初始化也是唯一的一次初始化。之后再次运行到含有 static 关键字的初始化语句时不会再执行该语句。共有两种变量存储在静态存储区全局变量和 static 变量只不过和全局变量比起来static 可以控制变量的可见范围。 static修饰全局变量和函数 3️⃣ 在全局和/或命名空间范围 (在单个文件范围内声明变量或函数时) static 关键字指定变量或函数为内部链接即外部文件无法引用该变量或函数。         针对上面这个概念的理解我们一次来解析以下 1. 首先说一下全局变量全局变量的作用域十分的广只要在一个源文件中定义后这个程序中的所有源文件、对象以及函数都可以调用生命周期更是贯穿整个程序。文件中的全局变量想要被另一个文件使用时就需要进行外部声明以下用extern关键字进行声明。-----也即是说全局变量既可以在源文件中使用也可以在其他文件中使用只需要使用extern外部链接以下即可 2. static修饰全局变量和函数时会改变全局变量和函数的链接属性-------变为只能在内部链接从而使得全局变量的作用域变小。   接着我们用代码进行解析 首先在Hello.c文件中定义一个全局变量 char a 和函数 PrintfHello()之后在test.c文件中进行extern 进行外部链接运行代码 之后我们进入正题 在全局变量和函数之前用 static进行修饰看看效果         会发现生成错误无法解析外部符号a和PrintfHello()等全局变量a和PrintfHello()不能被test.c文件调用了。所以我们可以很容易看出static修饰后让全局变量a和PrintfHello()的作用域变小了令全局变量a和PrintfHello()无法被其他文件调用。 ⭐总结 1. 全局变量和函数本身是具有外部链接属性的在Hello.c文件中定义的全局变量和函数在test.c文件中可以通过【链接】来使用 2. 但如果全局变量被static修饰那这个外部链接属性就会被修改成内部链接属性此时这个全局变量就只能在自己的源文件中使用 static在修饰全局变量和函数的作用 ⭐作用         如果加了 static就会对其它源文件隐藏。例如在 a 和 printHello 的定义前加上 staticmain.c 就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量而不必担心命名冲突。static 可以修饰函数和变量将其对其他源文件隐藏起来从而避免命名冲突。对于函数来讲static 的作用仅限于该隐藏功能。 五、C中的 static 本小节主要介绍在 C中引入了面向对象的特性类之后static关键字的一些用途。当然 C 是兼容 C 语言的所以C语言中的 static 在C中也是成立的。 static的C用法 声明为static的类成员称为类的静态成员分为如下两类 用static修饰的成员变量称之为静态成员变量用static修饰的成员函数称之为静态成员函数 静态的成员变量一定要在类外进行初始化 static在C中的重点概念 1️⃣静态成员为所有类对象所共享不属于某个具体的实例 2️⃣静态成员变量必须在类外定义定义时不添加static关键字 3️⃣静态成员函数没有隐藏的this指针不能访问任何非静态成员 4️⃣访问静态成员变量的特殊方式 5️⃣静态成员和类的普通成员一样也有public、protected、private3种访问级别也可以具有返回值⭐接下来将重点讲解上面三个作用个五点概念的理解和应用 静态成员为所有类对象所共享不属于某个具体的实例 请看如下代码 class A { private:static int _n;int _k;char _a; }; int main() {cout sizeof(A) endl; //8return 0; }         这里的运行结果为8这里的计算规则是按照C语言那套计算结构体大小的规则。并没有把我静态成员变量_n考虑进去因为静态成员变量属于整个类是类的所以对象所以静态变量成员不计入总大小。   静态成员变量必须在类外定义定义时不添加static关键字 class A { private://声明static int _n;static int _k; }; //定义 int A::_n 0; int A::_k 0; 静态成员函数没有隐藏的this指针不能访问任何非静态成员 class A { public:static void Func(){cout ret endl; // err错误访问了非静态成员因为无this指针cout _k endl; //正确} private://声明int ret 0;static int _k; }; //定义 int A::_k 0; 访问静态成员变量的特殊方式 当静态成员变量为公有时可有如下三种进行访问 通过对象.静态成员来访问通过类名::静态成员来行访问通过匿名对象突破类域进行访问 class A { public: // 声明static int _k; }; // 定义 int A::_k 0; int main() {A a;cout a._k endl; //通过对象.静态成员来访问cout A::_k endl; //通过类名::静态成员来行访问cout A()._k endl;//通过匿名对象突破类域进行访问return 0; } 当静态成员变量变成私有时可采用如下方式 通过对象.静态成员函数来访问通过类名::静态成员函数来行访问通过匿名对象调用成员函数进行访问 class A { public:static int GetK(){return _k;} private:static int _k; }; int A::_k 0; int main() {A a;cout a.GetK() endl; //通过对象.静态成员函数来访问cout A::GetK() endl;//通过类名::静态成员函数来行访问cout A().GetK endl; //通过匿名对象调用成员函数进行访问return 0; } 静态成员和类的普通成员一样也有public、protected、private3种访问级别也可以具有返回值 1、静态成员函数可以调用非静态成员函数吗 答案不可以因为静态成员函数是没有this指针的无法调用非静态成员函数。   2、非静态成员函数可以调用类的静态成员函数吗 答案可以因为静态成员为所有类对象所共享不受访问限制   六、static面试题 搞清楚了static的特性来看几道道面试题 面试题1 实现一个类计算中程序中创建出了多少个类对象。 思路 假设命名该类为A那么A类型的对象一定是经过构造函数或拷贝构造的那么我们就可以分别定义两个静态成员变量在构造函数和拷贝构造里变量这样每创建一次对象变量就一次自然就好求了。如下 class A { public:A(){_count1;}A(const A aa){_count2;}static int GetCount1(){return _count1;}static int GetCount2(){return _count2;} private:static int _count1; static int _count2; }; int A::_count1 0; int A::_count2 0; A Func(A a) {A copy(a);return copy; } int main() {A a1;A a2 Func(a1);cout a1.GetCount1() endl; // 1cout a2.GetCount2() endl; // 3cout A::GetCount1() A::GetCount2() endl; // 4 } 分析         A a1 调用了一次构造函数a2 Func(a1)调用了一次拷贝构造A copy(a)调用了一次拷贝构造return copy 返回的时候copy会销毁所以提前需要进行拷贝构造进行拷贝保存 。所用总共四次。 七、static OJ面试题 1、求123...n 题目 链接直达  求123...n 思路 这里我可以自己单独定义一个Sum类专门进行求和我定义n个对象它就会调用n次构造函数此时就可以在构造函数内实现累加为了实现累加需要在Sum类里设定两个静态成员变量因为静态成员属于整个类以此确保每次访问的变量都是同一个最后返回累加的值即可。 注意 如若不支持变长数组我们只能用new来完成在获取返回的累加值时可以单独在类内写个函数返回私有成员变量该函数可以是静态成员函数这样就可以指定类域去调用不需要借助对象了。也可以借助友元。 代码 #includeiostream using namespace std; class Sum { public:Sum() //构造函数内实现累加{_ret _i;_i;}int GetRet() //static int GetRet() 也可以是静态成员函数{return _ret; //返回获取的求和值} private://静态成员变量类内声明static int _i;static int _ret; }; //静态成员变量类外定义 int Sum::_i 1; int Sum::_ret 0; class Solution { public:int Sum_Solution(int n) {Sum a[n]; //支持变长数组可以这样写return a[1].GetRet(); //注意通过对象去调用成员函数//return Sum::GetRet();静态成员函数支持用类域访问/* 如若不支持变长数组就用new来开辟n个空间Sum* ptr new Sum[n];return ptr-GetRet(); */} }; 八、共勉 以下就是我对C/C static关键字的理解如果有不懂和发现问题的小伙伴请在评论区说出来哦同时我还会继续更新对C 类和对象的理解请持续关注我哦
http://www.dnsts.com.cn/news/78249.html

相关文章:

  • 做网站的网络公司南京注册公司多少钱
  • 网站空间1g多少钱一年网站搜索引擎优化技术
  • 本地常州微信网站建设国外mod大型网站
  • 可以免费生成网站的软件那里有正规网站开发培训学校
  • 长春市星宿科技网站建设公司怎么样人才招聘网站模板html
  • 销售行业怎样做网站百度公司网站建设
  • 网站seo新手wordpress 双语站点
  • 襄阳谷城网站建设wordpress获取页面链接
  • 贵州网站外包更换wordpress编辑器
  • 建设局网站自查自纠贵州高端网站开发
  • 昌平县城做网站苏州外贸网站建设优化推广
  • 能访问所有网站的浏览器昆明网络营销软件
  • 平顶山网站建设去哪儿网站建设需要哪些技术
  • 室内设计网站导航简易的在线数据库网站模板
  • 阿里云服务器上如何做网站网站开发费用做账
  • 自己做网站设计制作怎么建设html网站
  • seo技术建站二级域名做网址导航大全网站
  • 用html5做的静态网站网站爱站网seo工具查询
  • 网上花店 网站源代码icp ip 网站备案查询系统
  • 淳化网站制作1 网站建设的目标是什么
  • 抖音代运营收费详细价格常州 网站优化
  • dw做的网站怎么发布深圳市工程建设网站
  • 沈阳企业建站系统模板iis7 网站访问权限
  • dw5做简单的企业网站网站开发人员岗位
  • 怎么在自己的网站做淘宝客交互式英语网站的构建
  • 技术支持 东莞网站建设 轴承8元一年虚拟云主机
  • 网页网站建设软件蓝海国际版网站建设
  • 广州购物网站公司地址营销型网站建设明细报价表
  • 公众号可以做自己网站的超链接crm网站推荐
  • 手机网站怎么做seowordpress如何设置目录