优艾设计网

c++指针见过最奇怪的情况?

优艾设计网 https://www.uibq.com 2023-04-18 16:23 出处:网络 作者:PS教程自学
大家可以试试看,红框里第一个cout运行输入数字会错误,而只保留第二个cout的话输出是正确的?为什么这样,不是已经令他们相等了吗另外附上源代码,这是输入几个数字在数组里,按字母结束输入。。开始运行按 1 2 q就

大家可以试试看,红框里第一个cout运行输入数字会错误,而只保留第二个cout的话输出是正确的?为什么这样,不是已经令他们相等了吗
另外附上源代码,这是输入几个数字在数组里,按字母结束输入。。开始运行按 1 2 q就行。

#include <iostream> using namespace std; double* fill_array(double* begin); void show_array(double* begin, double* end); void reverse_array(double* begin, double* end); const int N = 5; int main() { double a[N], *end; int n = 0; cout << a << endl;end = fill_array(a); show_array(a, end); reverse_array(a, end); //show_array(a,end); } double* fill_array(double* begin) { 优艾设计网_设计圈double* ptr = begin; int x; while (cin >> x) { *(ptr++) = x; } return ptr; } void show_array(double* begin, double* end) { double* ptr; cout << "array:";for (ptr = begin; ptr < end; ptr++) cout << *ptr << " "; cout << endl; } void reverse_array(double* begin, double* end) { double* ptr; double* ptrb = ptr; *ptr = *begin; ptr++; *ptr = *(end - 1); double* ptre = ptr;ptr = ptrb; //红框段 cout << *ptr << endl; cout << *ptrb; }


风青C 优艾设计网_PS百科 2022-07-10 21:26

问题来了:


ty_131973848 2022-07-10 21:32

优艾设计网_电脑技术

然后……怎么可能会不出错呢?


小食客Stop 2022-07-10 21:48

第一句 ptr 申明了但未赋值,所以 ptr 的指向未知; 然后优艾设计网_设计 ptrb = ptr,所以这时候 ptrb 也指向未知; 后面 ptr = ptrb; // 红框段,又把 ptr 置为指向未知地址的境地;


眼眸里的那抹悲凉 优艾设计网_平面设计 2022-07-10 21:52

不作死就不会死


0

精彩评论

暂无评论...
验证码 换一张
取 消