c语言函数中传地址跟传指针有什么不同?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

c语言函数中传地址跟传指针有什么不同?

a123456678 2016-06-06 09:51:26 1804

c语言函数中传地址跟传指针有什么不同?

我定义一个指针把指针变量作为参数 和 定义变量把变量的地址作为参数有什么不同?

例如: 网上找到的:

函数定义:
int queue_init(queue *Q){

Q->front = NULL;
Q->rear = NULL;

}
函数调用:
...
queue Q;
...
queue_init(&Q);
...
错误函数调用:
...
queue *Q;
...
queue_init(Q);
...
为什么后者是错误的调用?

地址不同 指针地址 c语言不同函数 c语言不同 指针传地址
分享到
取消 提交回答
全部回答(4)
  • 一生有你llx
    2019-07-17 19:27:41

    queue *Q没有分配具体的内存

    0 0
  • nothingfinal
    2019-07-17 19:27:41

    queue *Q没有分配具体的内存

    0 0
  • xumaojun
    2019-07-17 19:27:41

    queue *Q没有分配具体的内存

    0 0
  • a123456678
    2019-07-17 19:27:41

    C语言中只存在按值传递这个概念。即便是指针,指针的值就是它所指向的地址,本质上,它也是值。
    对于你上面的:

    ...
    queue Q; //这句声明,会让编译器为之分配内存空间
    ...
    queue_init(&Q); //在这个调用中会解引用指针&Q,因此,&Q这个指针必须是合法的。
    ...
    错误函数调用:
    ...
    queue *Q; //声明了一个指向quque结构的指针Q,至于Q指向哪块内存区域,这里并没有指定。
    //此时如果解引用指针Q,那么便是属于非法访问内存。
    ...
    queue_init(Q); //很明显,这里的调用也就是非法的了。
    ...

    0 0
添加回答
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

相似问题
最新问题