C语言没有引用,C++才有引用
2012-07-05 00:07
127 查看
如果用函数传递参数,实现改变某个数的值。
若用C语言,则传递一个指针值(地址),在函数里把指针所指向的内容重新赋值,指针值不会变。
若用C++语言,则可以用 ”引用参数“
C语言用户真心觉得不太习惯C++的这个特性。
深入一步,如果是要改变或创建一个struct指针类型的节点(例如链表节点、二叉树节点)
C语言
C++语言
当然,C++兼容C的语法,也就是说以上的代码都可以在C++里运行。
还有一个关于gcc编译器,怎样用C编译器,怎样用C++编译器。
(1)用C编译器的情况: gcc text.c
(2)用C++编译器的情况: g++ test.c 或者 g++ test.cpp 或者 g++ test.c (也就是用g++命令或者源文件后缀是cpp,则默认是用C++编译器)
若用C语言,则传递一个指针值(地址),在函数里把指针所指向的内容重新赋值,指针值不会变。
#include<stdio.h> int change(int *i) { (*i) = 100; } int main() { int a = 60; printf("%d\n",a); change(&a); printf("%d\n",a); return 0; }
若用C++语言,则可以用 ”引用参数“
#include<stdio.h> int change(int &i) { i = 100; } int main() { int a = 60; printf("%d\n",a); change(a); printf("%d\n",a); return 0; }
C语言用户真心觉得不太习惯C++的这个特性。
深入一步,如果是要改变或创建一个struct指针类型的节点(例如链表节点、二叉树节点)
C语言
#include<stdio.h> #include<stdlib.h> struct tree { int num; struct tree *l; struct tree *r; }; int createTreeNode(struct tree **p) { (*p) = (struct tree*)malloc(sizeof(struct tree)); (*p)->l=NULL; (*p)->r=NULL; return 0; } int main() { struct tree *head=NULL; createTreeNode(&head); if (head == NULL) printf("is NULL"); else printf("is not NULL"); return 0; }
C++语言
#include<stdio.h> #include<stdlib.h> struct tree { int num; struct tree *l; struct tree *r; }; int createTreeNode(struct tree * &p) { p = (struct tree*)malloc(sizeof(struct tree)); p->l=NULL; p->r=NULL; return 0; } int main() { struct tree *head=NULL; createTreeNode(head); if (head == NULL) printf("is NULL"); else printf("is not NULL"); return 0; }
当然,C++兼容C的语法,也就是说以上的代码都可以在C++里运行。
还有一个关于gcc编译器,怎样用C编译器,怎样用C++编译器。
(1)用C编译器的情况: gcc text.c
(2)用C++编译器的情况: g++ test.c 或者 g++ test.cpp 或者 g++ test.c (也就是用g++命令或者源文件后缀是cpp,则默认是用C++编译器)
相关文章推荐
- 坑爹,原来C语言没有按引用传递,GCC报错,难道怪我C++学的太好了
- 在C语言里没有C++所谓的“按引用传递”
- C++引用和C语言指针调用函数
- 从C语言过渡到C++之引用(别名)
- C语言没有引用
- C语言引用C++定义的函数
- C语言学习笔记 (002) - C++中引用和指针的区别(转载)
- C++控制台没有引用的头文件也会编译的原因
- 【C语言】【面试题】C++中String类引用计数器的浅拷贝写法与深拷贝写法
- C++中有string类,string是一个类不是一种类型,c语言中没有
- C++中没有定义类的引用。
- C语言中没有引用传递,谨记!
- C语言和C++的几点不同之处,const,register,三目运算符,&引用
- c语言和c++中值传递、指针传递和引用传递的比较和区别
- 说说C语言与C++的有些区别(一)----为什么C语言没有BOOL类型,而C++有;枚举类型的区别;左值
- C语言C++指针与java中引用的一点对此
- 【C语言】【面试题】C++中String类引用计数器的浅拷贝写法与深拷贝写法
- 【转载】C++应用引用计数技术
- c++引用总结
- c++中指针,指针的引用,指针的指针的区别