c语言基础

c语言基础

#include <stdio.h>头文件,就是调用人家写好的一些函数(就是一些功能模块的集合)

Int main()主函数,表示一个程序的开始。有且仅有一个main函数。

return 0表示正常退出。

Int a;232-1,定义一个整型变量,这个整型变量里面存储的是整数。

a=10给一个整形变量赋值。

1.如何命名一个变量

变量名:它是只能由数字,字母,下划线组成的,开头只能是字母或者下划线;比如:

student_id01 student student01 student_haha01; 合法的变量名    2student; 不合法的变量名

2.指针,地址

0x01

0000...1010

 

 

 

 

 

int *p;

p=0x001;

*p;

int a=10;

int *p;

p=&a;

*p

 

 

 

 

 

 

※编译的四个步骤

1.预处理   简单的替换,将一些宏定义库函数替换到代码中去。

gcc -E hello.c -o hello.i

2.编译   将预处理之后的代码进行词义分析,语法检查。(报错一般出在这个阶段)并且生成汇编代码。

gcc -S hello.i -o hello.s

3.汇编   将汇编代码转换成二进制的代码

gcc -c hello.s -o hello.o

4.链接   将生成的二进制文件链接成计算机可执行的文件。

gcc hello.o -o hello

 

我们编写一段代码,每一个变量都有它自己所在的存储位置。都有哪些存储位置:

      一般存储局部变量

    它的空间比较小,它是由系统自动分配和释放内存的

    int a;//系统分配了四个字节的空间给了a

    一般的局部变量都是存储在栈中的。

    定义在一个函数(就是一个功能模块)中的局部变量,在函数结束时就不能再次使用了,因为它已经被系统回收了。

    定义的全局变量存放在全局数据段,(总之就是不在栈中),它的作用范围是整个程序。

            程序员手动分配内存的变量,调用malloccalloc之类的手动分配内存的函数

未初始化数据段     又称未初始化全局变量区

初始化数据段         已经初始化的全局变量

代码段(正文段)        一些条件语句,代码存放在代码段

 

int a=0; //全局初始化区,.data

static int b=20;//全局初始化区,.data

static   静态的意思,作用,变量b,它被限定在本文件中,不能被其他文件使用。一般来说,它存储在初始化数据段

 

char *p1;//全局未初始化区 .bss

const int A=10;// .rodata段,const表示只读,就是说A的值不能改变,或者说A是一个常量

 

void main(void)

{

Int b;//

char s[]=”abc”;//

char *p2;//

static int c=0;//全局(静态)初始化区,.data

char *p3=”123456”;//123456在常量区,p3在栈上。

char *p=”wangling”;//这里是定义一个字符串常量,字符串常量不可改变。

 

p1=(char*)malloc(10);//分配得来的1020个字节的区域就在堆区

p2=(char*)malloc(20);

strcpy(p1,”123456”);//123456在常量区,编译器可能会将它与p3所指向的”123456”优化成一个地方

}

 

 

getchar();putchar(); 输入输出单个字符函数括号中能填写变量名、转义字符、16进制数、8进制数、10进制数。

需要注意的是:你的字符或者转义字符,必须是单个,必须用单引号括起来,你的数字(不管是什么进制的数,都不要加单引号)

具体代码截图如下:

 

 gets();puts(); 输入输出字符串的函数;

 scanf(" %d ",&n); printf(",,,,,,"); 最常用的输入输出函数

字符串输入输出:

 

 

 

练习:

 

1.输入一个大写字母,转换为小写字母输出

方法一:

方法二:

 

 

 

 

 

2.输出姓名,年龄,工资,性别

方法一:

方法二:

结果如下:

If else语句

执行结果:

执行结果:

 

&&

执行结果:

||

执行结果:

switch语句

执行结果:

字符作为常量表达式

易错点:case后面要空一格;常量后有:冒号;defalut在最后结束;跳出循环用break

配置vimrc

输入三个整数,输出最大值和最小值

易错点:先从键盘输入a,b,c,然后再把a赋值给max,min,然后进行比较;可以直接使用if

执行结果:

输入三个实数,按从大到小的顺序输出

         }

易错点:赋值的顺序;先把值赋给空值;比较的顺序也不能乱

执行结果:

 

 

 

 

1——100的和:(用循环语句for

          }

执行结果:

计算1——100的和(while语句)

 

If else

If   else if   else

Switch

For

While

 

For(表达式1;表达式2;表达式3)

{

循环体4

}

1--2--4--3--2--4--

For(;;)//表示死循环

只要表达式成立,就继续循环

 

While1//表示死循环

While(表达式)

{

 

}

 

Do

{

}while(表达式);

 

 

 

 

 

 

 

 

 

 

易错点:(ch=getchar())!=‘ ’

练习1:循环输入n个数,n的值通过终端输入,求出输入的n个数中大于0的数值的和。

 

易错点:给sum赋初值;先scanf输入才能判断大小;scanf中数值要加&

练习2:假设公鸡5元钱一只,母鸡3元钱一只,小鸡1元钱3只,给你100元钱,请买100只鸡,设计算法

 

易错点:给z赋值:z=100-5*x-3*y;x+y+3*y要加括号!

 

 

 

 

 

1.static     静态

2.特点:

1.static定义的全局变量----它的主要作用是,限定该变量只能被本文件中的行数使用,不能被其他文件中的函数调用。就是限定作用域在本文件中。

2.static定义的局部变量----只被初始化一次,当函数结束时,保留函数结束时的值。当函数再次被调用的时候,a就不会再次被初始化为0

3.

void swap()

{

static  int  a=0

a++

printf(“%d ”,a);

}

int main()

{

swap();//调用一个函数

swap();//调用一个函数

printf();

}

原文地址:https://www.cnblogs.com/changru/p/5972472.html