C++学习

机器语言==》面向过程的==》面向对象的。

重载:函数名相同,参数不一样(类型,个数);

重载不是面向对象的特征,只是简化编程互操作的一种方案;

注意:对函数(方法)重载要谨慎、注意操作符重载和覆盖;

复杂数据类型:

数组、指针、结构、类

数组:把同类型的值存储在同一变量名下;仍需要被声明为某一特定类型:float,char, int————

注意:c语言中我们一般把字符串存储在一个字符数组中,但C++中我们一般使用一个对象string。

对齐问题:32位系统是四字节,64位是8字节。有内存对齐、文件对齐。

指针是一个用来存放地址的变量 type*pointerName;故可以把地址放在指针变量里。

星号的用途:第一种是用于创建指针,第二种是对指针进行解引用。

C++支持无类型指针void * vPpinter;解引用之前必须先转换为一种适当的数据类型。

指针和数组:

数组名是数组首地址。

思考:

#include <iostream>

using namespace std;

int main()
{
    const unsigned short ITEM = 5;
    
    int intArray[ITEM] = {1,2,3,4,5};
    char charArray[ITEM] = {'a','s','d','f','g'};
    
    int *intPtr = intArray;
    char *charPtr = charArray;
    
    cout << "整形" << endl; 
    for( int i = 0; i < ITEM; i++)
    {
        cout << *intPtr << " at " << reinterpret_cast<unsigned long>(intPtr) << endl;
        intPtr++;
    }

                  for( int i = 0; i < ITEM; i++)
    {
        cout << *intPtr << " at " << intPtr << endl;
        intPtr++;
    }

    
    cout<< "字符型" << endl; 
    for( int i = 0; i < ITEM; i++)
    {
        cout << *charPtr << " at " << reinterpret_cast<unsigned long>(charPtr) << endl;
        charPtr++;
    }    
    
                  for( int i = 0; i < ITEM; i++)
    {
        cout << *charPtr << " at " << charPtr << endl;
        charPtr++;
    }

    return 0;
}

字符和整形为啥输出结果有差异:reinterpret_cast<unsigned long>()带来的影响

 ?

原文地址:https://www.cnblogs.com/OrdinaryMiracle/p/4347733.html