C程序设计语言笔记1.导言

  C之前上学学过,但是就会点基本语法,连指针都不会,根本就不能算会C。打算以C语言他爹Ritchie先生的C程序设计语言第二版为教材,fedora11下gcc编译器,gedit做编辑器把C语言重新学习一下。

  导言部分主要是简单介绍是一个C语言的快速入门。

  首先是传统的Hello world程序,这个没啥说的:

  

#include <stdio.h>

main()
{
printf("hello world\n");
}

在gedit中编辑保存为cpro.c后,控制台输入“gcc cpro.c",然后./a.out即可运行。

1.gcc如果要提示警告,可加参数-Wall。但是比较奇怪的是,如果函数调用时参数类型不符,居然也能编译过,但是其他朋友说他们机器是不行的,此问题有待查询,目前未搜到答案

2.每次都输入"gcc cpro.c"和"./a.out"运行太费事,可以编写shell脚本运行,方法gedit runc.sh,输入

gcc cpro.c -Wall
./a.out

之后只要运行sh runc.sh即可运行。

3.C语言中函数默认返回类型为int,但是不写return也不管。


然后是常量变量问题:

1.要注意#define haha 1000,末尾是没有分号的,这个容易顺手写错,写错后编译器会报错。

2.C原先没有bool型,要用int型,貌似C99标准中加入了stdbool.h就可以用了。

*EOF在linux中是ctrl+D,这个调试程序的时候经常用到。


再往下是数组,没字符串很痛苦,char s[]很不习惯。


最后是函数,函数中提到外部变量。外部变量在函数中使用应加extern显式声明一下,有两种例外情况:

1.如果外部变量定义在使用之前,可以不用extern声明。

2.如果变量在一个文件中定义,多个文件中使用,则需要用extern将使用的变量与之定义关联,通常放于头文件中。

3.void aa()和void aa(void)一样,但是ANSI C中,空参数表必须用void显式声明。


这个貌似是翻转字符串的练习题,有BUG,就写个大概意思

#include <stdio.h>

#define maxc 1000

void reserve(char k[],char rk[],int len);

int main()
{
char c;
char k[maxc],rk[maxc];
int i=0;
while ((c=getchar())!=EOF)
{
if (c!='\n')
{
k[i]=c;
i++;
}
else
{
k[i]='\0';
reserve(k,rk,i);
printf("%s\n",rk);
i=0;
}
}
return 0;
}

void reserve(char k[],char rk[],int len)
{
int i=0;
while (k[i]!='\0')
{
rk[len-i-1]=k[i];
i++;
}
rk[len]='\0';
}

计划一个月时间看完,平均一天要看6页左右,目前是5号,刚好看完第25页。

原文地址:https://www.cnblogs.com/punkrocker/p/2312634.html