我试图理解字符串,数组和指针之间的关系.
我正在阅读的这本书有一个程序,它在其中初始化变量如下:
char* szString= "Name";
Run Code Online (Sandbox Code Playgroud)
我理解这一点的方式是,C风格的字符串只是一个字符数组.数组只是引用指针(存储数组的第一个值)和偏移量的简写版本.即
array[5]实际上返回从表达式计算的内容*(array+5).
因此,根据我的理解和测试,szString实际上被初始化为指向存储"Name"的数组的第一个地址的指针.我可以推断出这个因为输出到:
cout << *szstring;
Run Code Online (Sandbox Code Playgroud)
是字符"N".
我对声明的理解
cout << szstring;
Run Code Online (Sandbox Code Playgroud)
输出字符"Name",方法cout将参数szstring解释为字符串类型,并打印出所有字符,直到NUL字符.另一方面,对于参数*szstring,使用支持C样式字符串的此方法的不同版本.
因此,如果我可以初始化一个char类型指针来寻址一个chars数组中的第一个元素(一个C风格的字符串),为什么我不能初始化一个整数数组中第一个元素的int类型指针,如下所示:
int* intArray = {1,2,3};
Run Code Online (Sandbox Code Playgroud)