相关疑难解决方法(0)

为什么cout打印char数组与其他数组不同?

我正在使用C++来理解指针是如何工作的.我有这段代码使用数组,我只是用它来理解等价物如何与指针一起工作.

int main() {    
    int arr[10] = {1,2,3};    
    char arr2[10] = {'c','i','a','o','\0'};
    cout << arr << endl;
    cout << arr2 << endl;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,arr输出整数数组的第一个元素的地址(如预期的那样),但arr2不输出字符数组的第一个元素的地址; 它实际上打印"ciao".

我错过了什么或者我还没有学到这个?

c++ arrays pointers

14
推荐指数
2
解决办法
2万
查看次数

使用<iostream>打印指针

为什么

#include <iostream>
using namespace std;

int main() {
  cout << (char*)0x10 << endl; 
}
Run Code Online (Sandbox Code Playgroud)

但是,段错误

#include <iostream>
using namespace std;

int main() {
  cout << (void*)0x10 << endl; 
}
Run Code Online (Sandbox Code Playgroud)

似乎工作得很好?

c++ iostream

6
推荐指数
1
解决办法
4517
查看次数

int和char数组有什么区别?

下面的int和char数组有什么区别:

int main()
{
    int numbers[] = {2,1,3};
    char letter[] = {'a','b','\0'};
    cout<< numbers<<endl;
    cout<< letter<<endl;
}
Run Code Online (Sandbox Code Playgroud)

输出:

0x22ff12 // an address
ab
Run Code Online (Sandbox Code Playgroud)

为什么不显示213?我知道数组的名称将指向其第一个元素的地址,但为什么char数组显示不同的行为?

c++

5
推荐指数
3
解决办法
2819
查看次数

"cout"和"char地址"

char p;
cout << &p;
Run Code Online (Sandbox Code Playgroud)

这不会打印字符p的地址.它打印一些字符.为什么?

char p;
char *q;
q = &p;
cout << q;
Run Code Online (Sandbox Code Playgroud)

即使这样也没有.为什么?

c++ cout char

5
推荐指数
2
解决办法
3094
查看次数

为什么我的指针输出一个字符串而不是内存地址?C++

我正在研究一个使用指针的字符串类,我在理解我的print函数在这里工作时遇到了一些困难.具体来说,为什么cout << pString输出字符串而不是它指向的动态数组的内存地址?我的理解是变量pString是一个指针.

class MyString
{
    public:
        MyString(const char *inString);
        void print();
    private:
        char *pString;
};


MyString::MyString(const char *inString)
{
    pString = new char[strlen(inString) + 1];
    strcpy(pString, inString);
}

void MyString::print()
{
    cout << pString;
}

int main( )
{
    MyString stringy = MyString("hello");
    stringy.print();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ pointers dynamic-arrays

4
推荐指数
2
解决办法
1304
查看次数

char[] 和 int[] 的区别

最近,我看了一个视频,其中说当我定义一个整数数组时

int my_array[] = {1,2,3};
Run Code Online (Sandbox Code Playgroud)

然后我打印了 my_arraycout << my_array;然后我会得到内存中第一个整数的地址,但是当我们定义一个字符数组时

char my_string[] = "Hello";
Run Code Online (Sandbox Code Playgroud)

然后当我尝试打印 my_string 时,cout << my_string它返回Hello,当我们定义一个指向字符的指针时,它与指针类似

char mystring[] = "HELLO";
char *my = mystring;
cout << my << endl;//HELLO
Run Code Online (Sandbox Code Playgroud)

我们尝试打印返回字符串的指针变量。

现在我读了这篇文章,我读到这个字符串带着他的内存地址。但是我仍然无法弄清楚为什么它们不相同以及为什么字符数组打印字符串文字而 int 数组打印第一个的地址。

提前致谢。

c++ arrays pointers operator-overloading implicit-conversion

4
推荐指数
1
解决办法
224
查看次数

为什么std :: cout可以打印char []?

下面的代码打印整个字符串.我很困惑为什么会这样做.

char test[] = "jeff";
cout<<test<<endl;
Run Code Online (Sandbox Code Playgroud)

输出是"Jeff",我期望它打印char数组"test"的值,因为test是指针,指针是'J'的第一个元素.

为什么我打印整个字符串,当我cout<<test

c++ pointers char

3
推荐指数
2
解决办法
2263
查看次数

为什么这是使用指向c ++的输出

我不知道为什么这段代码会给出结果.我认为指针p应该是地址,str输出应该始终是while循环中的地址.为什么结果是那样的真正价值str

char str[] = "we are poor students";//???????
cout<<str<<endl;
char *p = str;
while (*p != '\0')
{
    cout << p<<endl;
    p++;
}
return 0;
Run Code Online (Sandbox Code Playgroud)

这是它给出的结果:

we are poor students
we are poor students
e are poor students
 are poor students
are poor students
re poor students
e poor students
 poor students
poor students
oor students
or students
r students
 students
students
tudents
udents
dents
ents
nts
ts
s
Run Code Online (Sandbox Code Playgroud)

c++ c++11

3
推荐指数
1
解决办法
77
查看次数

打印C++ int指针vs char指针

当我运行以下代码时:

int i[] = {1,2,3};
int* pointer = i;
cout << i << endl;

char c[] = {'a','b','c','\0'};
char* ptr = c;
cout << ptr << endl;
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

0x28ff1c
abc
Run Code Online (Sandbox Code Playgroud)

为什么int指针返回地址,而char指针返回数组的实际内容?

c++ string pointers

2
推荐指数
1
解决办法
230
查看次数

如何在C++中获取std :: string中元素的地址?

例如,我有以下字符串:

std::string s = "Hello, World!"
Run Code Online (Sandbox Code Playgroud)

我想要的地址中最后一个元素的s'!'.

我尝试了以下代码,但它似乎没有输出我想要它.

std::cout << &s[s.length() - 1];
Run Code Online (Sandbox Code Playgroud)

那输出'!'不是它的地址,同样的情况发生s.back()

是因为格式化引起的std::cout或其他地方的问题?

基本上我想要一个函数,它输出字符串中最后一个(如果可能的话,第一个)元素的地址.

c++ arrays string memory-address

2
推荐指数
1
解决办法
69
查看次数