留声旅途 发表于 2019-10-20 00:11:20

学指针数组的时候遇到了个问题,有个语句不是很理解

char *p={"qwe","rty","uio"};

尽可能仔细的解释一下吧,刚学指针,可能比较多东西理解不来。

bin554385863 发表于 2019-10-20 01:29:18

本帖最后由 bin554385863 于 2019-10-20 01:46 编辑

这是一个含有三个元素为指针的数组,每个指针又指向一个字符串
相当于:
#include <iostream>
int main(int argc, char const *argv[])
{
    char str = {"qwe","rty","uio"};
    char *p;
    for (size_t i = 0; i < 3; i++)
    {
      p = (char*)&str;
      std::cout<<"p["<<i<<"] = "<<*(p+i)<<std::endl;
    }
   
    return 0;
}

---------------------------------------------------------------------------------
Microsoft Windows [版本 10.0.16299.1087]
(c) 2017 Microsoft Corporation。保留所有权利。

E:\Users\86184\Documents\Code>c:\Users\86184\.vscode\extensions\ms-vscode.cpptools-0.26.0\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-tbdkvgpp.qyd --stdout=Microsoft-MIEngine-Out-aaz51oxl.xmu --stderr=Microsoft-MIEngine-Error-ihypjwgz.ucr --pid=Microsoft-MIEngine-Pid-qnrxlby4.21c "--dbgExe=E:\My Program\MinGW\bin\gdb.exe" --interpreter=mi
p = qwe
p = rty
p = uio

E:\Users\86184\Documents\Code>

matrixgadener 发表于 2019-10-20 02:16:45

先得理解一个东西,字符串和整型,浮点型等等不是一个数据类型,估计可能觉得说的是废话,
但是紧接着有个知识点是当我们打印引用(也就是地址)这些变量的时候,得到结果是不同的,
当我们打印整型地址的时候,输出是地址,当我们打印字符串地址的时候,输出不是地址了,是字符串,不仅仅不是地址,也不是地址对应那一个字符的值,而是整个字符。
下面再说指针数组:
首先它是个数组,从主宾关系上就能看出来,这个数组中每个元素都是地址,这个地址是字符串的地址,剩下的都好理解了。

hyolyn 发表于 2019-10-20 07:15:41

这句就是错的.
页: [1]
查看完整版本: 学指针数组的时候遇到了个问题,有个语句不是很理解