C语言传参不支持引用
2015-10-24 23:48
501 查看
今天定义函数时,传参想像C++一样搞个 char*& 或 int&, 编译时报错.
实验了一会,才知道, C语言入参只能传值, 传指针,传指针的指针.
编译脚本
运行效果
实验了一会,才知道, C语言入参只能传值, 传指针,传指针的指针.
/// @file exam_1_8.c /** @brief 8. 参考例L2_8.C编写一个程序,输入2个学生的姓名、学号、英语、数学、计算机成绩,输出这两个学生的姓名、学号和平均分。 */ #include <stdlib.h> #include <stdio.h> /// 用CL编译, 不知道为啥不能使用 bool 类型, 自己定义一个 /// error C2065: 'bool' : undeclared identifier /// bool 不是C语言内建的数据类型么? #define LS_DEFINE #ifdef LS_DEFINE typedef char bool; #define true 1 #define false 0 #endif // #ifdef LS_DEFINE #ifndef MAX_PATH #define MAX_PATH 260 #endif // #ifndef MAX_PATH #define NUM_STUDENT 2 ///< 总共2个学生 typedef struct tag_stuInfo { char cName[MAX_PATH]; ///< 姓名 int iNo; ///< 学号 int iScoreEn; ///< 英文成绩 int iScoreMath; ///< 数学成绩 int iScoreCpt; ///< 计算机成绩 int iScoreAverage; ///< 3科平均分, 算出来的 }TAG_STUINFO; void clearScreen(); ///< 清屏 void procTask(); void ZeroStuInfo(TAG_STUINFO* pInfo); void inputInfo(int iIndex, TAG_STUINFO* pInfo); void printInfo(TAG_STUINFO* pInfo); int main(int agrc, char** argv) { clearScreen(); procTask(); return 0; } void procTask() { int iIndex = 0; TAG_STUINFO Info[NUM_STUDENT]; for (iIndex = 0; iIndex < NUM_STUDENT; iIndex++) { printf("\n"); ZeroStuInfo(&Info[iIndex]); inputInfo(iIndex, &Info[iIndex]); } printf("\n"); printf("student info list:\n"); for (iIndex = 0; iIndex < NUM_STUDENT; iIndex++) { printInfo(&Info[iIndex]); } } void printInfo(TAG_STUINFO* pInfo) { /// 输出这两个学生的姓名、学号和平均分。 do { if (NULL == pInfo) break; printf("No = [%d], name = [%s], ScoreAverage = [%d]\n", pInfo->iNo, pInfo->cName, pInfo->iScoreAverage); } while (0); } void inputInfo(int iIndex, TAG_STUINFO* pInfo) { do { if (NULL == pInfo) break; /// 输入信息 printf("please input student[%d] name:", iIndex); scanf("%s", pInfo->cName); printf("please input student[%d] NO:", iIndex); scanf("%d", &pInfo->iNo); printf("please input student[%d] Score English:", iIndex); scanf("%d", &pInfo->iScoreEn); printf("please input student[%d] Score Math:", iIndex); scanf("%d", &pInfo->iScoreMath); printf("please input student[%d] Score Computer:", iIndex); scanf("%d", &pInfo->iScoreCpt); /// 求均分 pInfo->iScoreAverage = pInfo->iScoreEn; pInfo->iScoreAverage += pInfo->iScoreMath; pInfo->iScoreAverage += pInfo->iScoreCpt; pInfo->iScoreAverage = (int)((pInfo->iScoreAverage + 0.5f) / 3); } while (0); } void ZeroStuInfo(TAG_STUINFO* pInfo) { do { if (NULL == pInfo) break; memset(pInfo->cName, sizeof(pInfo->cName), 0); pInfo->iNo = -1; pInfo->iScoreEn = 0; pInfo->iScoreMath = 0; pInfo->iScoreCpt = 0; pInfo->iScoreAverage = 0; } while (0); } void clearScreen() { system("cls"); }
编译脚本
d:\ cd D:\ls\lesson\2015_1023\exam_1_8 del *.exe del *.obj "C:\Program Files\Microsoft Visual Studio\VC98\Bin\cl" /c /W3 /WX /O2 exam_1_8.c "C:\Program Files\Microsoft Visual Studio\VC98\Bin\link" exam_1_8.obj call exam_1_8.exe pause
运行效果
相关文章推荐
- C++复制构造函数和赋值符的区别
- 字符串替换的一个工作实例
- c语言之 函数
- C语言分支结构和循环结构
- c++ 算法设计与分析(第四版) 流水作业调度
- 006--C++动态内存(简介)
- C++在命令行中回车实现默认输入
- c语言之指针理解一
- C++
- occcont.cpp 925
- C/C++ sort 函数的用法
- assert
- C++输入流cin方法详解
- C++设计模式之策略模式
- C++读取INI配置文件
- C++primer学习:拷贝控制(7):对象移动
- VC++ 在两个程序中 传递字符串等常量值的方法:使用了 WM_COPYDATA 消息的
- C/C++中<>和“”的区别
- C语言生成随机数
- C++用数组存放数据