分类 Development 下的文章

在实际使用中发现对字符串的运用是一个容易混乱的地方,尤其是使用指针指向一个字符串数组的时候。下面做一些简单分析。

一个简单的测试:

    const char* test1 = "abc";
    const string test2 = "abc";

    cout << test1 << endl;
    cout << *test1 << endl;
    cout << test2 << endl;
    cout << sizeof (test1) << endl;
    cout << sizeof (test2) << endl;

输出如下:

abc
a
abc
8
24

阅读全文


在 Windows 下可以使用 QT 部署工具:windeployqt 来自动提取可执行程序的依赖库,在 macOS 下同样有部署工具:macdeployqt 实现相同的功能。

工具路径在 QT 安装目录的对应编译器 bin 目录下,如:/Users/marconie/Qt/5.15.2/clang_64/bin/macdeployqt

为了方便使用建议将 bin 目录添加到系统 PATH 中,我的终端是 zsh 添加方法如下:

打开 ~/.zshrc 添加如下内容,可以使用 vim 来操作:

export PATH=$PATH:/Users/marconie/Qt/5.15.2/clang_64/bin

编辑完成后关闭文件,刷新源:

source ~/.zshrc

现在就可以直接使用命令了:

macdeployqt -h

阅读全文


如果要在 QT 中使用第三方库,需要将相关库文件路径写入项目 pro 文件内,有两种方式:GUI 对话框添加或直接编辑 pro 文件。

GUI 添加

使用 GUI 添加的好处是比较直观,使用鼠标点击即可。

右键项目名称,点击 add library:
1.jpg

阅读全文


在 c++ 中,一个 Macro 就是一段代码的聚合。使用这个 macro 名称就代表着对应的代码段。

有两种常见的 macro:object 形式,function 形式。可以定义任意有效的字符作为 macro 名称,甚至是 c 关键词。

阅读全文


有如下代码:

int main()
{
    char *s;
    s = "hello";

    cout << *s << endl;
    cout << s << endl;

    return 0;
}

//OUTPUT:
//h
//hello

首先定义了一个指针,然后给指针赋值为一个字符串。看起来以上写法有错误,s 指针是一个地址,为什么给它赋值一个字符串?

因为在 c++ 中字符串类似于我们提到的数组,使用数组名就表示第一个数组元素的地址。例如:

int main()
{
    int arr[] = {1, 3};
    int *p = arr;

    cout << *p << endl;
    cout << *(p+1) << endl;

    return 0;
}

//OUTPUT:
//1
//3

同样在字符串中,s = "hello" 表示将首字母 h 的地址赋给指针。