在64位元系统指标是64/8 = 8bytes,而double也是8bytes若指标指向更小的型态如int就不合算了,相反的指向物件就很适合,但因为指标与传值不同,指标会修改到被指向的目标,如果想避免修改到目标可以使用常数指标(const *Ptr)。
与C不同C++除了传值与传址还有一个传参考(pass by reference),在传址中我们常见到一个符号&其目的是取出记忆体位置,另外参考只是一个别名(allies)而已,怎麽说呢?以下两个swap范例中我们会发现参考(reference)并没有自己的记忆体位置而是直接使用传进来的变数的记忆体位置,相反的指标版本的swap多出了2个记忆体位置。
#include <stdio.h>
#include <stdlib.h>
void swap(int &x, int &y) {
printf("x,y记忆体位置:%p,%p\n", &x, &y);
int tmp = x;
x = y;
y = tmp;
}
int main(){
int a = 3;
int b = 5;
printf("a:%d,b:%d\n", a, b);
printf("a,b记忆体位置:%p,%p\n", &a, &b);
swap(a, b);
printf("a:%d,b:%d\n", a, b);
return 1;
}
//result
a:3,b:5
a,b记忆体位置:0x7fffffffdb10, 0x7fffffffdb14
x,y记忆体位置:0x7fffffffdb10, 0x7fffffffdb14
a:5,b:3
#include <stdio.h>
#include <stdlib.h>
void swap(int *x, int *y) {
printf("x,y记忆体位置:%p,%p\n", &x, &y);
int tmp = *x;
*x = *y;
*y = tmp;
}
int main(){
int a = 3;
int b = 5;
printf("a:%d,b:%d\n", a, b);
printf("a,b记忆体位置:%p,%p\n", &a, &b);
swap(&a, &b);
printf("a:%d,b:%d\n", a, b);
return 1;
}
//result
a:3,b:5
a,b记忆体位置:0x7fffffffdb20, 0x7fffffffdb24
x,y记忆体位置:0x7fffffffdaf8, 0x7fffffffdaf0
a:5,b:3
>>: JavaScript学习日记 : Day29 - import & export
平常在登入帐号密码的时候,下面常常会有验证码,接着就试着做做看吧 首先先把所有可能出现的字元打进来 ...
在 Day 25 介绍 React Profiler 的文章中有提到 React Developer...
本篇文章同步发表在 HKT 线上教室 部落格,线上影音教学课程已上架至 Udemy 和 Youtu...
目前discord bot已经有初步的功能了 之後写的功能一定会越来越多 决定使用cog的架构来写 ...
ZF3R0-FHED2-M80TY-8QYGC-NPKYF YF390-0HF8P-M81RQ-2D...