语句int *p;和cin>>*p;中的*p含义相同。
时间: 2024-04-26 15:26:27 浏览: 4
不完全正确。
语句`int *p;`是定义了一个指向整型变量的指针`p`,其表示的是指针`p`所指向的整型变量。
而语句`cin>>*p;`是从标准输入流中读取一个整型数值,并将其存储到指针`p`所指向的整型变量中,其表示的是指针`p`所指向的整型变量的内容。
虽然这两个语句都涉及到指针`p`所指向的整型变量,但是它们的含义不同。
相关问题
解释这段代码#include<iostream> using namespace std; int main(){int n; cin>>m>>n; cout<<(n-m)*30; return 0}
这段代码是一个简单的C++程序,用于计算两个整数之间的差值乘以30,并输出结果。
首先,`#include<iostream>` 是包含了输入输出流的头文件。
接下来,`using namespace std;` 是为了使用标准库中的命名空间。
然后,`int main()` 是主函数,程序从这里开始执行。
在主函数中,首先定义了一个整数变量 `n`。
然后,通过 `cin>>m>>n;` 语句从用户输入中读取两个整数,分别赋值给 `m` 和 `n`。
接着,`cout<<(n-m)*30;` 语句计算两个整数之间的差值乘以30,并将结果输出到屏幕上。
最后,`return 0;` 表示程序正常结束。
注意,代码中可能存在一个笔误,将 `int n;` 中的变量名 `n` 写成了 `m`。应该将其修正为 `int m;`。修正后的代码如下:
```cpp
#include<iostream>
using namespace std;
int main(){
int m, n;
cin >> m >> n;
cout << (n - m) * 30;
return 0;
}
```
为什么void add(people** arr, const int nov) { people* p = new people(); cout << "enter name" << endl; cin >> p->name; cout << "enter work" << endl; cin >> p->work; cout << "enter handlework" << endl; cin >> p->handlework; p->nov = nov; people** newarr = new people * [nov]; newarr[nov - 1] = p; for (int i = 0; i < nov - 1; i++) { newarr[i] = arr[i]; } //delete[]arr; arr = newarr; }取不到newarr的值
在这段代码中,`void add(people** arr, const int nov)`函数中的`arr`参数是一个指向指针数组的指针。当我们在函数内部对`arr`进行修改时,实际上只是修改了指针本身的值,并不会修改指针指向的内存空间。
在这段代码中,`arr = newarr;`语句只是将`arr`指针指向了`newarr`指针数组的内存空间,并没有修改原始指针数组的内容。因此,在函数外部访问`arr`时,无法获取到`newarr`的值。
如果你想要修改原始指针数组的内容,你需要将`arr`声明为指向指针数组的引用,即`people**& arr`。这样,在函数内部修改`arr`时,会直接修改原始指针数组的内容。
修改后的代码如下:
```cpp
void add(people**& arr, const int nov) {
people* p = new people();
cout << "enter name" << endl;
cin >> p->name;
cout << "enter work" << endl;
cin >> p->work;
cout << "enter handlework" << endl;
cin >> p->handlework;
p->nov = nov;
people** newarr = new people * [nov];
newarr[nov - 1] = p;
for (int i = 0; i < nov - 1; i++) {
newarr[i] = arr[i];
}
delete[] arr;
arr = newarr;
}
```
这样,当你调用`add`函数并传入指针数组的引用时,`arr`的修改将会影响到原始指针数组。