A blog site powered by WordPress

Moposx的部落阁

月份: 2020 年 5 月

C++ 中的指针常量、常量指针与指向常量的指针常量

在学习 C++ 的指针部分时,被 const 用于指针的情形给难住了。指针作为一种特殊类型的变量,它既存储着内存地址,又可以用来修改内存中的数据。

指针的定义:存储内存地址的一种变量。

声明指针:

PointedType* pointer_var_name = NULL; // safely initialized

const关键字的含义:所修饰的对象或者变量不能被修改

const和指针搭配可以有三种情形:

  1. 指针常量
    例: int* const p_var = &var;
    const关键字修饰变量p_var,此变量就不能被更改了。这时指针对变量的地址引用不可变,但是可以改变变量的值。
  2. 常量指针
    例: const int* p_var = &var;
    这时,int* 直接修饰了变量 p_var,并非不可变,因此指针对变量的地址引用是可变的,但是引用变量的值不可变。(即指向常量的指针。)
  3. 指向常量的指针常量
    例:const int* const p_var = &var;
    这种最好理解,内存引用地址和引用变量的值都不能变。

其实主要是判断const关键字的位置,它在变量名旁边说明引用地址不能变,如果是在类型前面说明引用变量的值不能变。

设置终端代理之后 yay 无法查找 AUR 软件包的解决方案

如题,在.zshrc中设置如下代理:

export http_proxy="socks://127.0.0.1:10808"
export https_proxy="socks://127.0.0.1:10808"

然后执行一下 yay 搜索:

$ yay zip
...
3 core/minizip 1:1.2.11-4 (26.2 KiB 85.6 KiB) (Installed)
Mini zip and unzip based on zlib
2 core/gzip 1.10-3 (77.8 KiB 156.9 KiB) base-devel
GNU compression utility
1 core/bzip2 1.0.8-3 (53.4 KiB 144.0 KiB) (Installed)
A high-quality data compression program
Error during AUR search: Get "https://aur.archlinux.org/rpc.php?arg=zip&by=name-desc&type=search&v=5": proxyconnect tcp: dial tcp: lookup socks: no such host
Showing repo packages only
==> Packages to install (eg: 1 2 3, 1-3 or ^4)
==>

可以看到没办法查询到 AUR 里面的软件包信息。Google 了一下发现有关的issue,找到了解决方案:

The proxy string may be prefixed with [scheme]:// to specify which kind of proxy is used. Use socks4://, socks4a://, socks5:// or socks5h:// (the last one to enable socks5 and asking the proxy to do the resolving, also known as CURLPROXY_SOCKS5_HOSTNAME type) to request the specific SOCKS version to be used. Otherwise SOCKS4 is used as default.

我使用的是 QV2Ray,支持设置 SOCKS5 和 HTTP 代理,按照这段话来看应该制定 proxy scheme 为 socks5,所以代理配置应该是:

export http_proxy="socks5://127.0.0.1:10808"
export https_proxy="socks5://127.0.0.1:10808"

之后刷新环境变量即可解决问题。

Powered by WordPress & Theme by Anders Norén