C++

char (*str)[2] 与 char * str[2]

2018-04-11  本文已影响2人  Kai_Z

简介

该文章主要介绍char (*str)[2]char * str[2]之间的区别,其实也就是我们经常所说的数组指针指针数组的区别。

ps:之所以选用char (*str)[2] 与 char * str[2]作为文章题目而不是数组指针指针数组,个人认为后者太容易搞混了,感觉还是记住两句代码更简单点。

char *str[2]

这就是我们常说的指针数组(array of pointrs)

例程

#include <iostream>
int main()
{
    char s[2] = { 'Z','K' };
    char *str[2];
    str[0] = &s[0];
    str[1] = &s[1];
    std::cout << "sizeof(str):"
        << sizeof(str) << std::endl;
    std::cout << "s[0] address:" << (void*)str[0] << "\n";
    std::cout << "s[1] address:" << (void*)str[1] << "\n";
    system("pause");
    return 0;
}
//输出结果
sizeof(str):8
s[0] address:004FFD78
s[1] address:004FFD79

char(*str)[2]

这就是常说的数组指针(a pointer to an array).

例程

#include <iostream>

int main()
{
    char s[2] = { 'Z','K'};
    char (*str)[2];
    str = &s; //注意这里的&符号,这里我们把s[2]作为一个整体,当取址的时候,需要使用取址符
    std::cout << "sizeof (*str):" << sizeof(str) << "\n";
    std::cout << "s[0] address:" << (void*)&s[0] << "\n";
    std::cout << "str:" << str << "\n";
    std::cout << "str+1:" << (str + 1) << "\n";
    system("pause");
    return 0;
}
//输出结果
sizeof (*str):4
s[0] address:0026F950
str:0026F950
str+1:0026F952
上一篇下一篇

猜你喜欢

热点阅读