Re: [问题] 函数呼叫传参数

楼主: OPIV (Monitor)   2014-12-30 23:17:50
※ 引述《Ruid (南无地藏王菩萨)》之铭言:
: 开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
: VC++
: 以下是程式码
: #include <iostream>
: using namespace std;
: class stack
: {
: public:
: int item[10];
: int top;
: void create(**);
: void insert(*);
: }
: void stack::create(**s)
: {
: (*s)=new stack;
: (*s)->top=-1;
: }
: void stack::insert(*s)
: {
: int a;
: cout<<"请输入一个数";
: cin>>a;
: s->top=++top;
: s->item[top]=a;
: }
: void main()
: {
: stack *abc;
: abc->create(&abc);
: abc->insert(abc);
: delete abc;
: }
: 问题:
: 想请问各位大大,在main()中的
: abc->create(&abc)、abc->insert(abc),这二行的语法
: 虽然程式是可以执行,但语法看起来就感觉有点奇怪
: 谢谢各位。
变量都有内存位址
int a;
&a 就是变量 a 的内存位址
在C里面可以把别人的内存位址储存起来,用来储存内存位址的型别就叫做指标
int *a = 内存位址;
就是指标的宣告方法
a 是一个指标,储存一个整数的内存位址
*a 就是这个整数的值
当然 指标 a 本身也有内存位址
&a 就是指标 a 自己的内存位址
要在别的函数里修改 a 指标储存的整数的话 ,就传 a 过去(*a 只有值,改了也没用)
同样的,要在别的函数里修改 a 指标指向的内存位址,就要传 &a 过去(a 只是个值,
改了也没用)
所以你那本书这样写也不能说他怎样喇
因为他真的没有写错...
顶多只能说是难以阅读...
作者: PkmX (阿猫)   2014-12-31 00:41:00
他的程式已经不是难以阅读的问题了 是根本不知所云
作者: fireslayer (fireslayer)   2014-12-31 01:36:00
没有写错跟写得好不好我觉得是两回事..
作者: CaptainH (Cannon)   2014-12-31 02:52:00
这不是难以阅读,是跟本有错在未初始化的指标上呼叫方法是未定义行为

Links booklink

Contact Us: admin [ a t ] ucptt.com