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

网站建设实习困难/如何做线上推广

网站建设实习困难,如何做线上推广,内网网站开发功能模块,广东vs北控直播C语言和c中的static关键字与const关键字 static: //改变存储区域,限制作用域 ①、改变存储区域: 在不同的上下文中,static 关键字可以用于改变变量或函数的存储区域。在函数内部,static 用于将局部变量的生存期从函数…

C语言和c++中的static关键字与const关键字

static: //改变存储区域,限制作用域

①、改变存储区域:
在不同的上下文中,static 关键字可以用于改变变量或函数的存储区域。在函数内部,static 用于将局部变量的生存期从函数的生命周期扩展到整个程序的生命周期,并将其存储在静态存储区中。

示例:

void foo() {static int count = 0;  // 静态局部变量count++;std::cout << "Count: " << count << std::endl;
}int main() {foo();  // 输出:Count: 1foo();  // 输出:Count: 2return 0;
}

②、限制作用域:
static 还可以用于限制变量、函数或类的作用域,使其仅在声明它们的文件中可见,而不是跨越整个程序的多个文件。这种情况下,static 在全局变量、函数和类的上下文中使用。

示例:

Copy code
// File1.cpp
static int globalVar = 42;  // 在当前文件中可见// File2.cpp
extern int globalVar;  // 从另一个文件中访问失败,因为 globalVar 的作用域被限制在了 File1.cpp 中

在这个示例中,globalVar 被声明为静态全局变量,它的作用域限制在了声明它的文件 File1.cpp 中,其他文件无法直接访问。

一、C和c++中的static

static

1、修饰局部变量 //改变存储区域: 栈区–>数据段 ,作用域:局部作用域

②C语言中static修饰的局部变量:
​ 在修饰局部变量时,static修饰的静态局部变量只执行一次, 其会改变局部变量的存储位置,从而使得局部变量的生命周期变长,直到程序运行结束以后才释放。

void test()
{int x = 0;x++;printf("%d ", x);
}int main()
{int i = 0;while (i < 5){test();i++;}return 0;
}
//1 1 1 1 1 
void test()
{static int x = 0;x++;printf("%d ", x);
}int main()
{int i = 0;while (i < 5){test();i++;}return 0;
}
//1 2 3 4 5  

②c++中static修饰的局部变量:
局部变量也就是定义在函数内部的变量,函数局部变量存放在栈区,该变量的生命周期由所在 {} 决定,进入 {} 作用范围而分配内存空间,退出 {} 作用范围而释放内存空间。
在局部变量的前面加上static,变成静态局部变量,即使多次调用该函数,静态变量的空间也只分配一次。

using namespace std;
void fun()
{static int n = 5;printf("%d\n", n);n++;
}
int main()
{int i;for(i=0; i<5; i++){fun();}return 0;
}

2、修饰全局变量 //限制作用域:外部链接属性–>内部链接属性

①C语言中的static修饰的全局变量
​static修饰全局变量的时, 会改变全局变量的链接属性,从而使得全局变量作用域变为只能在本文件中访问,extern无法调用。

c文件1

int i = 10;

c文件2

extern int i;
int main()
{printf("%d\n",i);return 0;
}

如果全局变量被static修饰,那这个外部链接属性就会被修改成内部链接属性
②c++中static修饰的全局变量
全局变量的空间会在程序的生命周期内分配,在全局变量的前面加上static,变成静态全局变量。

using namespace std;
static int n = 5;
int main()
{n = 10;printf("%d\n", n);return 0;
}

3、修饰函数 //限制作用域:外部链接属性–>内部链接属性

①C语言中static修饰函数
​static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。

​函数本身也是有外部链接属性的,而被static修饰后,函数的外部链接属性被修改成内部链接属性

c文件1

int Add(int a,int b)
{return x+y;
}

c文件2

extern int Add(int a,int b);
int main()
{int x = 3;int y = 4;int z = Add(x,y);printf("%d\n",z);return 0;
}

②c++中的static修饰函数
被static修饰的函数,叫静态函数。静态函数只能在当前文件中被访问,不可再其他文件中调用。其它文件中可以定义相同名字的函数,不会发生冲突


4、在c++中static还可以修饰成员变量 :静态成员变量, //不用通过对象调用, 所有对象共有的变量,

类的所有实体共享这个变量。

类的数据成员在类外定义时不加static。

class Test {
public:double d;static int n;
};int Test::n;  // 静态成员变量需要在类外声明(分配空间,可以显式初始化,默认初始化为0)cout << sizeof(Test) << endl;
cout << Test::n << endl;// 运行结果:8 0

静态成员变量存储在全局/静态区,静态成员变量只有在类外声明时才分配空间,可显式初始化,不显式初始化,默认初始化为0。
静态成员变量属于类不属于对象,sizeof()的结果不包括静态成员变量大小
可通过对象调用,也可以通过类名作用域调用(非静态成员变量只能通过对象调用)
静态常量整型数据成员可在类内初始化,也可在类外初始化


5、在c++中static还可以修饰成员函数: 静态成员函数,静态方法 //不用通过对象调用

静态成员函数中只能调用静态成员变量和静态成员函数

类的静态成员函数在类外实现时,与数据成员一样不需要加 static

class Test {
public:static void show() {cout << n << endl;}private:double d;static int n;
};int Test::n;cout << sizeof(Test) << endl;
Test::show();// 运行结果:8 0

二、C和c++中的const

const:

const含义:只要一个变量前用const来修饰,就意味着该变量里的时数据只能被访问,而不能被修改,也就是意味着“只读”(readonly)

const在类中既可以修饰成员变量也可以修饰成员函数本身,甚至还能修饰对象

const作用:
1:可以用来修饰变量,修饰函数参数,修饰函数返回值,且被const修饰的东西,都受到强制保护,可以预防其它代码无意识的进行修改,从而提高了程序的健壮性
2:使编译器保护那些不希望被修改的参数,防止无意代码的修改
3:增强代码的可读性


1、修饰变量

此时变量只能使用不可修改,直接修改(编译报错)与修改地址(程序异常)都不行

int main() {const int a = 20 ;printf("a = %d\n",a);a = 200 ;//errprintf("a = %d\n",a);return 0;
}

2、修饰指针变量类型(常量指针)

const修饰指针变量的类型,不可修改指针指向的地址里的内容(编译报错),可以修改指针的指向

void test()
{int c = 100;const int *p = &c;printf("c = %d\n",c);//*p = 888;//不可修改指针指向的地址里的内容,编译报错//printf("c = %d\n",c);int d =999;p = &d;//可以修改指针的指向printf("*p = %d\n",*p);
}
int main(int argc, char *argv[])
{test();return 0;
}

3、修饰指针变量(指针常量)

可以修改指针指向地址的内容,但是不能修改指针的指向(编译报错)

void test()
{int c = 200;int  * const p = &c;//const修饰指针,即指针常量printf("*p = %d\n",*p);*p = 888;//修改指针指向地址里的内容printf("*p = %d\n",*p);int d =999;//p = &d;//不能修改指针的指向,编译报错//printf("*p = %d\n",*p);}
int main(int argc, char *argv[])
{test();return 0 ;
}

4、既修饰指针变量类型又修饰指针(常量指针常量)

不能修改指针指向地址的内容,不能修改指针指向

void test()
{int c = 200;const int * const p = &c;//即修饰指针变量类型又修饰指针变量printf("*p = %d\n",*p);//*p = 888;//不能修改指针指向地址里的内容,编译报错//printf("*p = %d\n",*p);//int d =999;//p = &d;//不能修改指针指向,编译报错//printf("*p = %d\n",*p);
}
int main(int argc, char *argv[])
{test();return 0;
}

5、修饰函数返回值

如果给以“指针传递”方式的函数返回值加 const 修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加 const 修饰的同类型指针。

const char * GetString(void);//如下语句将出现编译错误:
//char *str = GetString();//正确的用法是
const char *str = GetString();

6、修饰函数参数

​ 如果函数参数采用“指针传递”,那么加 const 修饰可以防止意外地改动该指针,起到保护作用。

​ 如果参数作为输出参数,不论它是什么数据类型,也不论它采用“指针传递”还是“引用传递”,都不能加 const 修饰,否则该参数将失去输出功能(因为有 const 修饰之后,不能改变他的值)。

​ 如果参数作为输入参数,可以防止数据被改变,起到保护作用,增加程序的健壮性。


7、修饰类中的变量与函数

<1>修饰成员变量

对成员变量的修饰与修饰普通变量差不多,都是设置为只读数据,但是类中的const变量
只能 通过构造函数初始化列表进行初始化 或者 直接值,

using namespace std;
class A
{
public:A(int a):m_a(a){}  //正常A(int a){       //报错m_a = a;}
private:const int m_a;   //成员变量 只读   const变量
};
int main()
{A A1(1);
}

<2>修饰成员函数

​首先,const修饰成员函数,保留了const修饰普通函数的用法;其次,增加了在成员函数的声明后边添加const的用法,表示成员函数内部无法修改成员变量

using namespace std;
class A {
public:int a = 1;/*第一个const:表示返回指针指向不可被更改第二个const:参照const修饰变量的用法第三个const:表示该成员函数不可修改成员变量*/void  show(const int* p) const ;  //修饰函数 cosnt函数 : 函数不能修改变量
};void A::show(const int* p) const {a = 2;//报错,被第三个const限制*p = 2;//报错,被第二个const限制cout<<"a="<<a<<endl;cout<<"*p="<<*p<<endl;
}int main(){A a;int c = 2;const int *b = &c;b = a.show(b);*b = &c;//报错,被第一个const限制
}

<3>修饰对象 类似于修饰变量

​ 在实例化对象的时候,添加const关键字,就是const对象,const对象只能访问类中的const成员变量和const成员函数

const  class  object(params);
const class *p = new class(params);  //两种用法等价

相关文章:

c++——c/c++中的static和const

C语言和c中的static关键字与const关键字 static&#xff1a; //改变存储区域&#xff0c;限制作用域 ①、改变存储区域&#xff1a; 在不同的上下文中&#xff0c;static 关键字可以用于改变变量或函数的存储区域。在函数内部&#xff0c;static 用于将局部变量的生存期从函数…...

解决git:‘remote-http‘ 不是一个 git 命令错误提示

Jenkins使用Maven构建工程时&#xff0c;设置Git源码管理时报错&#xff1a; Failed to connect to repository : Command “/usr/local/git/bin/git ls-remote -h – http://192.168.1.35/root/javademo.git HEAD” returned status code 128: stdout: stderr: git&#xff1a…...

深度学习入门-3-计算机视觉-卷积神经网络

一、计算机视觉 1.概述 计算机视觉作为一门让机器学会如何去“看”的学科&#xff0c;具体的说&#xff0c;就是让机器去识别摄像机拍摄的图片或视频中的物体&#xff0c;检测出物体所在的位置&#xff0c;并对目标物体进行跟踪&#xff0c;从而理解并描述出图片或视频里的场…...

前端面试:【闭包】JavaScript世界的神秘法术

嘿&#xff0c;尊敬的代码探险家&#xff01;欢迎来到JavaScript的奇妙世界&#xff0c;今天我们将探索一种神秘的魔法&#xff0c;那就是闭包。闭包&#xff0c;听起来像是一个古老的咒语&#xff0c;实际上&#xff0c;它是编程中的一个重要概念&#xff0c;让你能够创造出强…...

Ubuntu20 ctrl+alt+T无法打开终端

事情是这样的&#xff0c;某天改了下python版本&#xff0c;发现linux默认打开终端的快捷键ctrlaltT寄了&#xff0c;网上给出的都是修改快捷键不出意外肯定没用 但是幸好我们是会分析的&#xff0c;我看到&#xff0c;很多回答说新增一个快捷键运行的命令是gnome-terminal&…...

leetcode 387.字符串中第一个唯一字符

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;https://leetcode.cn/problems/first-unique-character-in-a-string/description/ 思路&#xff1a; 比较优的方式使用相对映射记录的方式。在 ASCII 表中小写字母 -97 就是 0 - 25。在依次从前遍历查找即可。需要注意的…...

【三次握手】TCP三次握手由入门到精通(完整版)

⬜⬜⬜ &#x1f430;&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;(*^▽^*)欢迎光临 &#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;&#x1f430;⬜⬜⬜ ✏️write in front✏️ &#x1f4dd;个人主页&#xff1a;陈丹宇jmu &am…...

Java 异步计算

CompletableFuture&#xff08;可完成的Future&#xff09; 一个可完成的Future&#xff0c;在我们调用他的get方法的时候&#xff0c;他会阻塞等待这个任务完成来获取他的结果。 当然也可以为这个任务注册一些回调&#xff0c;类似于完成时&#xff0c;出现异常时&#xff0c;…...

【FAQ】调用视频汇聚平台EasyCVR的iframe地址,视频无法播放的原因排查

有用户反馈&#xff0c;在调用iframe地址后嵌入用户自己的前端页面&#xff0c;视频无法播放并且要求登录。 安防监控视频汇聚平台EasyCVR基于云边端一体化架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;可提供视频监控直播、云端录像、视频云存储、视频集中…...

⛳ TCP 协议面试题

目录 ⛳ TCP 协议面试题&#x1f43e; 一、为什么关闭连接的需要四次挥⼿&#xff0c;⽽建⽴连接却只要三次握⼿呢&#xff1f;&#x1f3ed; 二、为什么连接建⽴的时候是三次握⼿&#xff0c;可以改成两次握⼿吗&#xff1f;&#x1f463; 三、为什么主动断开⽅在TIME-WAIT状态…...

C 语言的字符串函数 puts()

属于标准库 <stdio.h> 函数原型: int puts(const char *str) str – 这是要被写入的 C 字符串. 如果成功, 该函数返回一个非负值为字符串长度 (包括末尾的 \0), 如果发生错误则返回 EOF. 作用: puts() 函数只显示字符串, 把一个字符串写入到标准输出 stdout, 直到空…...

Flutter如何知道页面/组件可见?

在以前项目中,onPageShow和onPageHide由开源框架flutter_boost提供,在此次项目中,创新性的采用了fusion框架,fusion框架同样提供了类似的方法,但在实践中发现,当flutter页面相互replace或者多次pop页面后,onPageShow不会调用,这就导致了诸多bug,于是,需要探索如何了解…...

【MySQL】如何使用Named Pipe协议(Windows)连接MySQL数据库

文章目录 【MySQL】如何使用Named Pipe协议(Windows)连接MySQL数据库连接MySQL的协议使用Named Pipe协议(Windows)连接MySQL步骤1&#xff1a;确认MySQL服务器已启用Named Pipe连接启动Named Pipe连接方法 步骤2&#xff1a;客户端使用Named Pipe连接MySQL服务器。例1&#xff…...

【c++】c++的一些技术操作

pthread_create 的第三个参数&#xff0c;为函数指针&#xff0c;指向处理线程函数的地址。该函数&#xff0c;要求为静态函数。如果处理线程函数为类成员函数时&#xff0c;需要将其设置为静态成员函数。C静态成员函数访问非静态成员 https://blog.csdn.net/yueguangmuyu/arti…...

JS中对象数组深拷贝方法

structuredClone() JavaScript 中提供了一个原生 API 来执行对象的深拷贝&#xff1a;structuredClone。它可以通过结构化克隆算法创建一个给定值的深拷贝&#xff0c;并且还可以传输原始值的可转移对象。 当对象中存在循环引用时&#xff0c;仍然可以通过 structuredClone()…...

2022数学建模国赛C题官网展示论文C155论文复现

2022数学建模国赛C题C155论文复现 1.内容比对2.第一问第二小问复现代码2.1 页表合并2.2 数据的正态性检验2.2.1数据的正态性检验效果图 2.3不满足正态性&#xff0c;进行中心化对数比变换2.3.1 核心步骤-inf用0值替换2.3.2中心化对数比变换效果图 2.4描述性统计2.5 箱线图绘制 …...

阿里云 K8s PVC 绑定 StorageClass 申领 PV 失败

错误场景: 因为阿里云没有默认的 StorageClass 我也懒得更新&#xff0c;所以就创建了一个类型是云盘的 StorageClass。 但是在创建 PVC 之后发现一直是 Pending 状态就查询了一下日志&#xff0c;然后看到很多下面这种错误 liuduiMacBookM1Pro ~ % kubectl describe pvc graf…...

php数组

php数组是什么&#xff1f; 可以使用单个变量名存储多个不同类型的数据的特殊变量&#xff0c;这就是php数组。 php数组就是一个特殊的变量&#xff0c;它允许存储多个任意类型的数据。 创建数组 php数组有两种类型&#xff0c;分为索引数组和关联数组。 创建数组的方法有三种…...

构造不包含字母和数字的webshell

构造不包含字母和数字的webshell <?php echo "A"^""; ?> 输出的结果是字符"!“。之所以会得到这样的结果&#xff0c;是因为代码中对字符"A"和字符”"进行了异或操作。在PHP中&#xff0c;两个变量进行异或时&#xff0c;…...

中国大学生服务外包创新创业大赛丨借 AI 之力,助“记账”难题

一、中国大学生服务外包创新创业大赛 赛事介绍 中国大学生服务外包创新创业大赛&#xff0c;是响应国家关于鼓励服务外包产业发展、加强服务外包人才培养的相关战略举措与号召&#xff0c;举办的每年一届的全国性竞赛。 大赛均由中华人民共和国教育部、中华人民共和国商务部…...

MacOS 安装Redis并设置密码

在开发过程中&#xff0c;需要本地进行安装Redis进行测试&#xff0c;记录了下MacOS环境下安装Redis&#xff0c;以及设置密码。 Brew 安装 $ brew install redis启动服务 # 启动服务 brew services start redis # 关闭服务 brew services stop redis # 重启服务 brew servic…...

函数的参数作为引用

文章目录 1. num,list ,tuple2. list 作为默认值导致共享同一列表3. 防御可变参数4. 结论 1. num,list ,tuple 结论&#xff1a;num ,tuple 作为参数&#xff0c;自身不会因为函数的原因而改变&#xff0c;list 为可变量&#xff0c;会因为函数变而变。 测试 def f(a, b):a …...

【文化课学习笔记】【化学】非金属及其化合物

【化学】必修一&#xff1a;非金属及其化合物 硅及其化合物 硅单质 物理性质 单晶硅的结构与金刚石类似&#xff0c;为正四面体的立体网状结构。晶体中每个硅原子与其他四个硅原子相连接。\(1\mathrm{mol}\) 硅单质还有 \(\mathrm{2N_A}\) 个 \(\mathrm{Si-Si}\) 键&#xff1b…...

Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)

文章目录 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三)前情提要客户端部分 Unity进阶–通过PhotonServer实现联网登录注册功能(客户端)–PhotonServer(三) 前情提要 单例泛型类 using System.Collections; using System.Collections.Generic; …...

步步向前,曙光已现:百度的大模型之路

大模型&#xff0c;是今年全球科技界最火热&#xff0c;最耀眼的关键词。在几个月的狂飙突进中&#xff0c;全球主要科技公司纷纷加入了大模型领域。中国AI产业更是开启了被戏称为“百模大战”的盛况。 但喧嚣与热闹之后&#xff0c;新的问题也随之而来&#xff1a;大模型的力量…...

常见的 Python 错误及其解决方案

此文整理了一些常见的 Python 错误及其解决方案。 1、SyntaxError: invalid syntax 说明&#xff1a;无效的语法是最常见的错误之一&#xff0c;通常是由于编写代码时违反了 Python 的语法规则。可能的原因&#xff1a; 忘记在 if、while、for 等语句后写冒号&#xff0c;或者…...

文章评论以及回复评论邮件通知(Go 搭建 qiucode.cn 之八)

要说到评论。无疑是博客应用的灵魂所在了,它也正是站长与博友、博友与博友之间互相交流的桥梁,倘若少了它,博客应用将变得暗淡无关,索然无味,恍如一具躺在床榻上的植物人,终究是无法与周边人言语的。 也正是有了评论,站长在该博客应用所发表的博文,博友才得以通过评论,…...

java面试基础 -- ArrayList 和 LinkedList有什么区别, ArrayList和Vector呢?

目录 基本介绍 有什么不同?? ArrayList的扩容机制 ArrayLIst的基本使用 ArrayList和Vector 基本介绍 还记得我们的java集合框架吗, 我们来复习一下, 如图: 可以看出来 ArrayList和LinkedList 都是具体类, 他们都是接口List的实现类. 但是他们底层的逻辑是不同的, 相信…...

matlab 点云最小二乘拟合空间直线(方法一)

目录 一、算法原理1、空间直线2、最小二乘法拟合二、代码实现三、结果展示四、可视化参考本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、空间直线 x...

详解junit

目录 1.概述 2.断言 3.常用注解 3.1.Test 3.2.Before 3.3.After 3.4.BeforeClass 3.5.AfterClass 4.异常测试 5.超时测试 6.参数化测试 1.概述 什么是单元测试&#xff1a; 单元测试&#xff0c;是针对最小的功能单元编写测试代码&#xff0c;在JAVA中最小的功能单…...