3.10输入、输出变量
【注:本程序验证是使用vs2013版】
#include <stdio.h> #include <stdlib.h> #include <string.h> #pragma warning(disable:4996) void fun(char *p){//p这里是输入 strcpy(p, "abcd"); } void fun2(char *p){ if (p == NULL){ return; } strcpy(p, "ef"); } void fun3(char **p, int *len){//p这里是输出 if (p == NULL){ return; } char *temp = (char *)malloc(100); if (temp == NULL){ return; } strcpy(temp, "asdf"); *p = temp; //间接赋值 *len = strlen(temp); } int main(void){ /* 输入:主调函数分配内存 输出:被调函数分配内存 */ char a[100] = { 0 };//这里是输入 fun(&a); printf("a = %s\n", a);
char *b = NULL; fun2(b); //不能给空,或者未知区域的东西赋值 printf("b = %s\n", b);
char *c = NULL; int len = 0; fun3(&c, &len); //这里是输出 if (c != NULL){ printf("c = %s, len = %d", c, len);
} printf("\n"); system("pause"); return 0; }