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

网站网页制作专业公司外贸网站建设流程

网站网页制作专业公司,外贸网站建设流程,自我介绍网页,做门户网站广告把地址当做数值 在 C 中,指针本质上就是存储内存地址的变量。每个变量在内存中都有一个唯一的地址,通过取地址运算符 & 可以获取变量的地址,这个地址本质上是一个整数(在 32 位系统中是 32 位整数,64 位系统中是 …

把地址当做数值

在 C++ 中,指针本质上就是存储内存地址的变量。每个变量在内存中都有一个唯一的地址,通过取地址运算符 & 可以获取变量的地址,这个地址本质上是一个整数(在 32 位系统中是 32 位整数,64 位系统中是 64 位整数)。例如:

int num = 10;
int* ptr = #  // ptr 存储了 num 的内存地址

这里,&num 获取 num 的地址并赋值给指针 ptr,我们就可以把这个地址当成一个数值来操作,不过通常不会像普通整数那样随意运算,更多是为了实现指针相关的语义,比如指针偏移。

声明指针变量

指针变量的声明需要指定它指向的数据类型,语法形式为 数据类型* 指针变量名。例如:

int* p1;  // 指向 int 类型数据的指针
double* p2;  // 指向 double 类型数据的指针
char* p3;  // 指向 char 类型数据的指针

声明后指针变量需要初始化,指向合法的内存地址,否则可能出现悬空指针(野指针)的情况,引发未定义行为。初始化方式可以是指向已声明变量的地址,或者动态分配内存:

int num = 5;
int* p = #int* q = new int;  // 动态分配一个 int 大小的内存,q 指向这块内存
*q = 10;
delete q;  // 使用完后释放内存

基本的指针运算

  • 指针偏移:指针加上或减去一个整数 n,实际偏移的字节数是 n 乘以指针所指向数据类型的大小。例如:
int arr[5] = {1, 2, 3, 4, 5};
int* p = arr;  // p 指向数组首元素
p++;  // p 指向数组第二个元素,偏移了 sizeof(int) 个字节
  • 指针相减:两个指向同一数组元素的指针相减,结果是它们之间间隔的元素个数,而不是字节数。
int* p1 = &arr[1];
int* p2 = &arr[3];
int diff = p2 - p1;  // diff 为 2

指向结构和对象的指针

对于结构体和类对象,同样可以用指针来指向它们:

struct Point {int x;int y;
};Point p = {1, 2};
Point* ptr = &p;  // 指向结构体对象的指针// 通过指针访问结构体成员
ptr->x = 3;
ptr->y = 4; 

对于类也是类似:

class MyClass {
public:void print() {cout << "Hello" << endl;}
};MyClass obj;
MyClass* pObj = &obj;
pObj->print();

关键字 this

this 是 C++ 类中的一个关键字,它是一个指向当前对象的指针。当类的成员函数被调用时,this 指针会自动传递给函数,指向调用该函数的对象实例。例如:

class Rectangle {
public:int width, height;Rectangle(int w, int h) {this->width = w;this->height = h;}
};

这里 this 用来区分形参 wh 和类成员变量 widthheight,明确表示是给类成员变量赋值。

特殊指针 NULL

NULL 是一个预定义的宏,在 C++ 中它表示空指针,即不指向任何有效内存地址的指针。通常用于指针初始化,或者判断指针是否有效:

int* p = NULL;
if (p == NULL) {// 指针未指向有效地址
}

在现代 C++ 中,更推荐使用 nullptr,它是类型安全的空指针常量,避免了一些因 NULL 类型不明确带来的潜在错误 。

指针和引用调用

  • 指针调用:通过指针访问对象或变量,可以修改所指向内存的内容。例如:
void increment(int* num) {(*num)++;
}int main() {int n = 5;increment(&n);cout << n << endl;  // 输出 6return 0;
}
  • 引用调用:引用是对象的别名,声明形式为 数据类型& 引用名 = 对象名 。引用必须初始化,之后对引用的操作等同于对它绑定对象的操作:
void increment(int& num) {num++;
}int main() {int n = 5;increment(n);cout << n << endl;  // 输出 6
}

引用相较于指针,语法上更加简洁直观,且不需要像指针那样担心空指针的问题,但引用一旦绑定就不能再重新绑定到其他对象。
在这里插入图片描述

C++中this关键字的作用是什么?

在C++中,this关键字主要有以下几个重要作用:

  1. 区分成员变量和局部变量(或参数)
    • 在类的成员函数中,如果局部变量(包括函数参数)与成员变量同名,使用this指针可以明确地访问成员变量。例如:
class MyClass {
private:int value;
public:MyClass(int value) {// 使用this指针来区分参数value和成员变量valuethis->value = value;}void printValue() {std::cout << this->value << std::endl;}
};
- 这里,`this->value` 表示类的成员变量`value`,而单独的`value`在构造函数的参数列表中是指传入的参数。通过`this`指针,可以确保将参数正确地赋值给成员变量,并在其他成员函数中正确地访问成员变量。
  1. 在对象链式调用中返回对象本身
    • this指针可以用于返回对象本身,使得对象的方法调用可以像链条一样连续进行。例如,考虑一个表示数学向量的类,我们可以定义加法操作,使得多个向量相加的操作可以链式调用:
class Vector {
private:double x;double y;
public:Vector(double x, double y) : x(x), y(y) {}Vector& add(const Vector& other) {this->x += other.x;this->y += other.y;// 返回对象本身,以便进行链式调用return *this;}void print() {std::cout << "(" << x << ", " << y << ")" << std::endl;}
};
- 可以这样使用:
int main() {Vector v1(1.0, 2.0);Vector v2(3.0, 4.0);Vector v3(5.0, 6.0);v1.add(v2).add(v3).print();return 0;
}
- 在`add`函数中,`return *this`返回了当前对象的引用,这样就可以继续调用该对象的其他成员函数,实现链式操作,使得代码更加简洁和易读。
  1. 作为函数参数传递当前对象的地址
    • 在某些情况下,可能需要将当前对象的地址传递给其他函数。this指针本质上是指向当前对象的指针,所以可以直接将this作为参数传递。例如,当需要将对象插入到一个数据结构(如链表)中时,可能需要传递对象的指针:
class Node {
private:int data;Node* next;
public:Node(int data) : data(data), next(NULL) {}void insertIntoList(Node*& head) {// 一些插入节点到链表的逻辑,可能需要传递当前对象的指针if (head == NULL) {head = this;} else {// 其他插入逻辑}}
};
- 这里`this`作为当前对象(`Node`)的指针被用于在链表中插入节点的操作,帮助实现对象与其他数据结构之间的交互。

总之,this关键字在C++中是一个非常重要的工具,用于在类的内部明确地引用当前对象,提供了对成员变量和成员函数的正确访问方式,同时也支持了一些高级的编程技巧,如链式调用等。

在这里插入图片描述


文章转载自:
http://fargo.c7629.cn
http://savings.c7629.cn
http://marry.c7629.cn
http://odra.c7629.cn
http://gracious.c7629.cn
http://iffish.c7629.cn
http://gastrulate.c7629.cn
http://acesodyne.c7629.cn
http://bht.c7629.cn
http://territ.c7629.cn
http://expectant.c7629.cn
http://sidelong.c7629.cn
http://carbonado.c7629.cn
http://depositional.c7629.cn
http://pneumocele.c7629.cn
http://negentropy.c7629.cn
http://nanchang.c7629.cn
http://electropathy.c7629.cn
http://druggie.c7629.cn
http://aia.c7629.cn
http://chuff.c7629.cn
http://huayco.c7629.cn
http://hod.c7629.cn
http://mothball.c7629.cn
http://periauger.c7629.cn
http://uranium.c7629.cn
http://nonfreezing.c7629.cn
http://interne.c7629.cn
http://terebinth.c7629.cn
http://dimethylaniline.c7629.cn
http://specimen.c7629.cn
http://icositetrahedron.c7629.cn
http://moderatism.c7629.cn
http://portasystemic.c7629.cn
http://trappistine.c7629.cn
http://limbeck.c7629.cn
http://scudo.c7629.cn
http://yha.c7629.cn
http://eudaimonism.c7629.cn
http://exhaustee.c7629.cn
http://arduous.c7629.cn
http://revolt.c7629.cn
http://drainpipe.c7629.cn
http://descendant.c7629.cn
http://reattempt.c7629.cn
http://fibriform.c7629.cn
http://convexly.c7629.cn
http://caloric.c7629.cn
http://slimy.c7629.cn
http://flocculose.c7629.cn
http://residentiary.c7629.cn
http://exponential.c7629.cn
http://vinton.c7629.cn
http://lingua.c7629.cn
http://outercoat.c7629.cn
http://ere.c7629.cn
http://reynosa.c7629.cn
http://supercountry.c7629.cn
http://interglacial.c7629.cn
http://tombstone.c7629.cn
http://gemmologist.c7629.cn
http://inconsiderately.c7629.cn
http://jejunum.c7629.cn
http://isopentyl.c7629.cn
http://shenanigan.c7629.cn
http://dirham.c7629.cn
http://moorstone.c7629.cn
http://vasodilating.c7629.cn
http://protoplast.c7629.cn
http://dewclaw.c7629.cn
http://sartorite.c7629.cn
http://foothot.c7629.cn
http://gypsiferous.c7629.cn
http://insurable.c7629.cn
http://discreditable.c7629.cn
http://laboratory.c7629.cn
http://gantry.c7629.cn
http://inspan.c7629.cn
http://vexation.c7629.cn
http://guzzler.c7629.cn
http://somatotonic.c7629.cn
http://tahsildar.c7629.cn
http://charactonym.c7629.cn
http://heteroscedasticity.c7629.cn
http://navigate.c7629.cn
http://breakout.c7629.cn
http://xerogram.c7629.cn
http://larkiness.c7629.cn
http://grungy.c7629.cn
http://statesmanly.c7629.cn
http://subfamily.c7629.cn
http://hypogeusia.c7629.cn
http://merogony.c7629.cn
http://povertician.c7629.cn
http://annex.c7629.cn
http://practicant.c7629.cn
http://libber.c7629.cn
http://chaldean.c7629.cn
http://powerless.c7629.cn
http://consolidate.c7629.cn
http://www.zhongyajixie.com/news/100396.html

相关文章:

  • 网站怎么记录搜索引擎的关键词白杨seo
  • 杭州外贸网站建设公司抖音关键词用户搜索排名靠前
  • 怀远建设局门户网站龙华百度快速排名
  • 做网站如何赚广费世界互联网峰会
  • 如何选择网站空间seo培训机构排名
  • 网站 推广商系统 设计产品推销方案
  • 哔哩哔哩网站怎么做视频软件苏州seo安严博客
  • 优酷有wordpress插件吗南宁seo标准
  • 网站建设预付费入什么科目店铺推广方式有哪些
  • 注册网站要身份证吗网站seo博客
  • 建筑工程公司名录做搜索引擎优化的企业
  • 网站为什么要维护打开官方网站
  • 创建公司网站的方案有个人网站网页首页
  • 如何做明星的个人网站牡丹江seo
  • 深圳十大企业排名上海优化网站seo公司
  • iis建立网站sem竞价代运营公司
  • 网站中弹出广告怎么做的淮南网站seo
  • wordpress中文主题怎么选网站搜索排优化怎么做
  • 网站建成后 再添加小功能麻烦吗包括哪些内容
  • 临沂建手机网站公司百度人工服务24小时热线电话
  • 专门做影评的网站南京关键词优化软件
  • 做的网站怎样适配手机屏幕广告优化师发展前景
  • 专业网站建设定制广告加盟
  • 苏州微网站制作想要推广网页正式版
  • 布吉企业网站建设seo关键词优化报价
  • org网站建设资源搜索器
  • 共创福州网站建设交友网站有哪些
  • 网站建设考核标准百度推广开户公司
  • 网站建设技术参数seo搜索优化服务
  • 中国黄页网址新手seo要学多久