您的位置:首页 > 编程语言 > C语言/C++

C语言中遇到的问题及解决方法

2012-05-06 10:36 330 查看
2012年5月5号;

问题:for语句和while语句后面有; 的情况。相当于
这是执行空循环,i会累加,但啥都不执行。直到不满足条件为止。

for(;;)
;

while()
;


2012年5月10号;

今天开始看《计算机程序设计艺术》,里面讲到算法的几重特性,其中的efficiency在谭浩强著《C程序设计》中被举例a/b的条件是b!=0,而原文中说的是诸如哥德巴赫猜想,翻译过来大致是“你不能写一条语句说当n=4时,若x^n+y^n+z^n=w^n,则继续”,因为这条语句计算机是无法一步实现的,所以是无效的。不知道中文版教材是不是曲解了原著的意思。

2012年5月18号;

C语言的一致性

遵循标准的C实现有两种:宿主式和独立式。

如果一个C实现接受所有严格遵循标准的程序,它就是一种遵循标准的宿主式实现。如果一个C实现接受所有严格遵循标准并且不适用除了float.h,iso646.h(C95),limits.h,stdarg.h(C99),stdbool.h和stdint.h(C99)之外的任何库函数的程序,她就是一种遵循标准的独立式实现。

一致性程序就是可以被一致性编译器所接受的程序。因此,一致性程序可以依赖于一致性C实现中一些非移植性的、由编译器所定义的特性。严格一致性程序则无法依赖这些特性(因此具有最大限度的可移植性)。这里我的观点就是比如graphic.h是Turbo C++的特征库函数,在其他编译器中没有,这样调用这个库函数的程序的可移植性就差,所谓的严格一致性指的是与C标准的严格一致,不含有C标准以外的任何库函数及特性。(不知道我的理解是不是有错误,希望看到的人能给予指正。)参考自《C语言参考手册(第五版)》。

void (*Fun)();

void myfunction()
{
printf("这是为什么呢?\n");
}

int main()
{
Fun ptr = myfunction;
ptr();//能输出结果
(*ptr)();//也能输出结果
return 0;
}


因为在C/C++中,在表达式中函数名得到的就是函数的地址, 这也是为什么可以把一个函数名赋值给一个函数指针的原因. 也就是说,函数名就跟数组名一样, 本身在表达式中是地址, 而不是值.double (*pfun) (double) = func; 而不需要 = &func; 因为&func 如果按照普通变量地址来解释, 语义上是行不通的, 所以标准规定 func == &func; 对函数指针进行调用的时候也就 *pfun() == pfun() 了. 

2012年6月4日

//编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用print函数输出这些记录。
#include<stdio.h>

struct Student
{
char num[5];
char name[8];
int score[3];
}student[5];

void main()
{
void print(struct Student student[5] );
int i,j;
for(i=0;i<5;i++)
{
printf("\n请输入学生的学号:%d\n",i);
printf("学号:");
scanf("%s",student[i].num);
printf("姓名:");
scanf("%s",student[i].name);
for(j=0;j<3;j++)
{
printf("科目 %d:",j);
scanf("%f",&student[i].score[j]);
}
printf("\n");
}
print(student);

}

void print(struct Student student[5])
{
int i,j;
printf("学号 姓名 科目 1 科目 2 科目 3\n");
for(i=0;i<5;i++)
{
printf("%5s%10s",student[i].num,student[i].name);
for(j=0;j<3;j++)
{
printf("%d",student[i].score[j]);
}
printf("\n");
}
}



这个代码用gcc struct.c 后./a.out执行没有问题。但是用gcc -o struct.c 后执行./struct就有问题。目前未明白问题原因。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  语言 c 编译器 struct fun gcc