函数类型的形参.c和.cpp的一点区别
先说一下.cpp的吧,这是c++文件的后缀,但是也是可以写C语言的,编c程序我也是用cpp后缀的,是因为我一开始写的时候书上传变量值得时候是用地址符的,然后我用.c为后缀,然后编译器报错,我也不知道错哪儿啊,先看一下用栈转化成二进制数的一个程序。程序代码:
#include<stdio.h> #include<stdlib.h> typedef struct { int *base; int *top; int stacksize; }stack; int initstack(stack &s) { s.base = (int*)malloc(sizeof(int) * 20); if (!s.base)exit(-2); s.top = s.base; s.stacksize = 20; return 1; } int push(stack &s, int e) { if (s.top == s.base + s.stacksize) { s.base = (int*)realloc(s.base, sizeof(int) * 10); if (!s.base)exit(-2); s.top = s.base + s.stacksize; s.stacksize += 10; } *s.top++ = e; return 1; } int pop(stack &s, int &e) { if (s.base == s.top)return 0; e = *--s.top; return 1; } void conversion(int num) { int n; stack s; initstack(s); while (num) { push(s, num % 2); num /= 2; } while (s.top != s.base) { pop(s, n); printf("%d", n); } printf("\n"); } int main() { int m; printf("请输入要测试的组数:"); scanf_s("%d", &m); int i, num; for (i = 0; i < m; i++) { scanf_s("%d", &num); conversion(num); } system("pause"); return 0; }
看一下形参里面就是地址符,这样调用函数中值的改变主函数中也会变的
然后看一下把.cpp改成.c后的结果是编译前就报错了,看一下
改成了.c后就得改了,一开始一头雾水的,不过还是写好了,看一下代码
程序代码:
#include<stdio.h> #include<stdlib.h> typedef struct { int *base; int *top; int stacksize; }stack; int initstack(stack *s) { s->base = (int*)malloc(sizeof(int) * 20); if (!s->base)exit(-2); s->top = s->base; s->stacksize = 20; return 1; } int push(stack *s, int e) { if (s->top == s->base + s->stacksize) { s->base = (int*)realloc(s->base, sizeof(int) * 10); if (!s->base)exit(-2); s->top = s->base + s->stacksize; s->stacksize += 10; } *s->top++ = e; return 1; } int pop(stack *s, int *e) { if (s->base == s->top)return 0; *e = *--s->top; return 1; } void conversion(int num) { int n; stack s; initstack(&s); while (num) { push(&s, num % 2); num /= 2; } while (s.base != s.top) { pop(&s, &n); printf("%d", n); } printf("\n"); } int main() { int m; printf("请输入要测试的组数:"); scanf_s("%d", &m); int i, num; for (i = 0; i < m; i++) { scanf_s("%d", &num); conversion(num); } system("pause"); return 0; }
同一个c程序代码,c文件里形式参数不能带地址符,而c++文件能带地址符,而能带地址符是很方便的,调用函数是只需要写变量就好了,自定义函数也更好写。
你们在.c和.cpp这两的程序里面看到这样子有什么样的想法和观点,欢迎评论。代码是vs2017写的。