简单的程序帮助-发送动态内存指针到函数
simple program help - sending dynamic memory pointer to function
好的,我的程序中有一个奇怪的问题,我真的不知道发生了什么。问题是:
- 当我只使用示例1时,我的程序崩溃
- 当我使用示例2时,它可以工作
#include <iostream>
using namespace std;
int show(int **a, int *n){
int i;
for(i=0; i<*n; i++){
cout << "number is: " << *a[i] << endl; // EXAMPLE 1
cout << "number is: " << *(*a+i) << endl; // EXAMPLE 2
}
}
main() {
int n = 3, i;
int *a = new int[n];
for(i=0; i<3; i++){
cout << "number: ";
cin >> a[i];
}
show(&a, &n);
}
operator[]
的优先级高于operator*
,因此*a[i]
与*(a[i])
相同。注意,a
是指向单个 int*
的指针,因此*(a[1])
(与a[1]
不同)将指向UB。
你可以用括号来指定你想要的优先级,把它改成(*a)[i]
就可以了。
BTW1:你应该为main()
声明返回类型,就像int main() { ... }
。
BTW2:我建议你使用std::vector
或std::array
代替原始数组,因为它是c++。
相关文章:
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- CUDA:统一内存和指针地址的更改
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- 为什么 vector 的随机访问迭代器给出与指针不同的内存地址?
- 当指向对象的指针作为参数传递给 std::thread 时,内存可见性
- 将统一的内存指针传递给内核会减慢程序的速度
- malloc - 运行时内存指针类型分配
- 共享内存指针分段错误
- 使用动态分配的内存(指针)
- 与对象一起返回时清除了内存指针
- 在UWP C++项目中,程序集分配的内存指针自动更改为0xffffffff
- 使用注入的 dll 使用内存指针编辑值
- 提升共享内存 - 指针的返回向量
- 监视从应用程序写入指定的内存指针从 DLL 接收
- 非分页内存指针
- Qt读取内存指针值
- 简单的程序帮助-发送动态内存指针到函数