小编Kin*_* Oe的帖子

为什么 ++(*p) 改变指针值?

如果我有这个代码:

int A[5] = { 2, 1, 3, 55 };
int *p = A;
cout << ++(*p);
Run Code Online (Sandbox Code Playgroud)

结果是3并且第一个位置的A3也是,为什么?

我的意思是,运算符()的层次结构比 层次结构更高++,那么我们首先需要操作*p

++(*p) => ++(2) => 3 
Run Code Online (Sandbox Code Playgroud)

A矢量有任何变化吗?

c c++ pointers

9
推荐指数
2
解决办法
261
查看次数

为什么 cin 在使用 getline 后没有获取缓冲区数据?

对于此代码:

#include <iostream>
#include <string>
#include <cstring>
#include <cstdio>

using namespace std;

#define p(a) cout << "|" << a << "|" << endl
int main() {
    
    char a[100];
    char b[100];

    cin.getline(a, 4, '\n');

    cin >> b;

    p(a);
    p(b);
    
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我的输入是“1234”

1234
Run Code Online (Sandbox Code Playgroud)

我有下一个输出:

|123|
||
Run Code Online (Sandbox Code Playgroud)

但我知道使用 getline,我得到三个元素:"123"它发送到a变量添加到\0字符的末尾。以同样的方式,剩余的字符"4\n"留在缓冲区中。那么为什么在接下来"cin>>"它没有被复制到b变量中?,为什么bnull

c++ cin getline

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

标签 统计

c++ ×2

c ×1

cin ×1

getline ×1

pointers ×1