分类 c++ 下的文章


Implicit conversion 隐式转换

当一个数据复制为兼容格式的类型时,隐式转换可以自动完成。

请看下面示例:

double a = 100.1;
int b;
b = a;
cout << b << endl;

//output:
//100

阅读全文


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

一个简单的测试:

    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

阅读全文


在 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 的地址赋给指针。