首页 > 其他分享 >C语言基础

C语言基础

时间:2023-07-26 22:05:11浏览次数:37  
标签:return 函数 int 基础 C语言 内存 printf main

主函数

1.1 main函数

main函数参数
一共有三个:
1.int argc 整型变量
2.char *argv[] 字符指针的数组,通俗一点就是字符串数组,每个元素都是字符串
3.char *envp[] 字符串数组

int main(void)//无参数形式
{
return 0;
}
int main(int argc, char *argv[])//带形式参数
{
return 0;
}

C语言程序主函数只能有1个main()函数是函数的入口,一个C程序总是从main()函数开始执行的。
int指明了main()函数的返回类型 ,函数名后面的圆括号一般包含传递给函数的信息。void表示没有给函数传递参数。

1.2 main()函数的返回值

从前面我们知道main()函数的返回值类型是int型的,而程序最后的 return 0; 正与之遥相呼应,0就是main()函数的返回值。那么这个0返回到那里呢?返回给操作系统,表示程序正常退出。因为return语句通常写在程序的最后,不管返回什么值,只要到达这一步,说明程序已经运行完毕。而return的作用不仅在于返回一个值,还在于结束函数。

1.3 main()函数的参数

C编译器允许main()函数没有参数,或者有两个参数 (有些实现允许更多的参数,但这只是对标准的扩展)。这两个参数,一个是int类型,一个是字符串类型。第一个参数是命令行中的字符串数。按照惯例(但不是必须的),这个int参数被称为argc(argument count)。第二个参数是一个指向字符串的指针数组。命令行中的每个字符串被存储到内存中,并且分配一个指针指向它。按照惯例,这个指针数组被称为argv(argument value)。系统使用空格把各个字符串格开。一般情况下,把程序本身的名字赋值给argv[0],接着,把最后的第一个字符串赋给argv[1] ,等等。

2、关键字

  1. auto break case char const continue default do double else enum
  2. float for goto if int long register return short signed sizeof
  3. struct switch typedef union unsigned void volatile while

int – 整形
char – 字符串
short – 短整型
long – 长整形
float – 单精度浮点型
double – 双精度浮点型

2.1 关键字 typedef

typedef 顾名思义是类型定义,这里应该理解为类型重命名。
比如:

//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名
typedef unsigned int uint_32;
int main()
{
    //观察num1和num2,这两个变量的类型是一样的
    unsigned int num1 = 0;
    uint_32 num2 = 0;
    return 0;
}

2.2 关键字static

在C语言中:
static是用来修饰变量和函数的

  1. 修饰局部变量-称为静态局部变量
  2. 修饰全局变量-称为静态全局变量
  3. 修饰函数-称为静态函数

2.2.1 修饰局部变

//代码1
#include <stdio.h>
void test()
{
    int i = 0;
    i++;
    printf("%d ", i);
}
int main()
{
 int i = 0;
    for(i=0; i<10; i++)
   {
        test();
   }
    return 0;
}
//代码2
#include <stdio.h>
void test()
{
    //static修饰局部变量
    static int i = 0;
    i++;
    printf("%d ", i);
}
int main()
{
int i = 0;
    for(i=0; i<10; i++)
   {
        test();
   }
    return 0;
}

对比代码1和代码2的效果理解static修饰局部变量的意义。
结论:
static修饰局部变量改变了变量的生命周期
让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。

2.2.2 修饰全局变量

//代码1
//add.c
int g_val = 2018;
//test.c
int main()
{
    printf("%d\n", g_val);
    return 0;
}
//代码2
//add.c
static int g_val = 2018;
//test.c
int main()
{
    printf("%d\n", g_val);
    return 0;
}

代码1正常,代码2在编译的时候会出现连接性错误。
结论:
一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使
用。

2.2.3 修饰函数

//代码1
//add.c
int Add(int x, int y)
{
    return c+y;
}
//test.c
int main()
{
    printf("%d\n", Add(2, 3));
    return 0;
    }
//代码2
//add.c
static int Add(int x, int y)
{
    return c+y;
}
//test.c
int main()
{
    printf("%d\n", Add(2, 3));
    return 0;
}

代码1正常,代码2在编译的时候会出现连接性错误.
结论:
一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。

3、转义字符

\0 转义字符
\n 转义字符
转义字符 - 转变了意思的字符

C语言基础_指针变量

4. 注释

  1. 代码中有不需要的代码可以直接删除,也可以注释掉
  2. 代码中有些代码比较难懂,可以加一下注释文字
    比如:
int main()
{
/*int a = 0;
int b = 0;*/
int a, b;
scanf("%d %d", &a, &b)
{
	/*if(a>b)
	{
	printf("%d %d", a, b);
	}
	else
	printf("%d %d", b, a);*/
	printf("%d", a*b);
return 0;
}

5. #define 定义常量和宏

//define定义标识符常量
#define MAX 1000
//define定义宏
#define ADD(x, y) ((x)+(y))
#include <stdio.h>
int main()
{
    int sum = ADD(2, 3);
    printf("sum = %d\n", sum);
    
    sum = 10*ADD(2, 3);
    printf("sum = %d\n", sum);
    
    return 0;
}

6. 指针

6.1 内存

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。

所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。

为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地

址。

C语言基础_#include_02

C语言基础_#include_03


变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。

取出变量地址如下:

#include <stdio.h>
int main()
{
 int num = 10;
 #//取出num的地址
    //注:这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
 printf("%p\n", &num);//打印地址,%p是以地址的形式打印
 return 0;
}

C语言基础_字符串_04


地址存储,需要定义指针变量。

int num = 10;
int *p;//p为一个整形指针变量
p = #

指针的使用实例:

#include <stdio.h>
int main()
{
 int num = 3;
 int *p = #
 *p = 5;
    return 0;
}

6.2 指针变量的大小

#include <stdio.h>
//指针变量的大小取决于地址的大小
//32位平台下地址是32个bit位(即4个字节)
//64位平台下地址是64个bit位(即8个字节)
int main()
{
    printf("%d\n", sizeof(char *));
    printf("%d\n", sizeof(short *));
    printf("%d\n", sizeof(int *));
    printf("%d\n", sizeof(double *));
    return 0;
}

结论:指针大小在32位平台是4个字节,64位平台是8个字节。

7.结构体

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。
比如描述:

名字、年龄、性别、学号

这里只能使用结构体来描述了。

struct Stu
{
    char name[20];//名字
    int age;      //年龄
    char sex[5];  //性别
    char id[15]; //学号
};

结构体的初始化:

//打印结构体信息
struct Stu s = {"张三", 20, "男", "20180101"};
//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps-
>id);

标签:return,函数,int,基础,C语言,内存,printf,main
From: https://blog.51cto.com/u_16182079/6861083

相关文章

  • Python测试用例-unittest-基础
    一个简单的测试用例脚本importunittestclassTestCase(unittest.TestCase):@classmethoddefsetUpClass(cls)->None:print("setUpClass")@classmethoddeftearDownClass(cls)->None:print("tearDownClass")......
  • 静态时序分析STA基础
    @目录一、TCL语言和synopsysTCL语言入门1.1TCL基本指令1.2synopsysTCL常用语言二、STA基本概念2.1时序弧(TimingArc)与线延迟、单元延迟2.2建立时间与保持时间2.3时序路径(Timingpath)2.4时钟域(ClockDomains)2.5操作条件(OperatingConditions)和PVT(ProcessVoltageTemperat......
  • c语言学习9
    一、字符串字符:人能看得懂的符号或图案,在内存中以整数形式存储,根据ASCII码表中的对应关系显示出相应的符号或图案'\0'0空字符'0'48'A'65'a'97串:是一种数据结构,存储类型相同的若干个数据对于串型结构的处理是批量性的,会从头开始直到遇到结束标志......
  • Python基础day53 Django
    web应用的简介因为Django框架是一个专门用来开发web项目的框架1.web应用程序是什么?web应用程序是一种可以通过web访问的应用程序,也就是说只需要一个浏览器即可,不需要其他软件了2.应用程序与有两种模式Django就是开发的B/S应用程序,所以,我们就认为浏览器就是我们......
  • Django基础介绍
    web应用简介Django框架是一个专门用来开发web项目的框架1.web应用程序是什么web应用程序是一种可以通过web访问的应用程序,也就是说只需要一个浏览器即可,不需要其他软件2.应用程序又两种模式c/s、b/sDjango就是开发b/s程序的,所依,我们就认为浏览器是客户端,Django框架就......
  • 基于C语言的P2P软件实现
    完整资料进入【数字空间】查看——搜索"writebug"摘要Peer-to-Peer网络毫无疑问是当今的热点技术主题。Napster和Gnutella的广泛使用证明了peer-to-peer应用的强大潜力。P2P(或者说peer-to-peer)网络是一种基于操作上下文的网络模型,任何一个节点都同时作为客户机和服务器。J......
  • java基础
    注释单行注释//这是单行注释多行注释/*一段*多行注释*/文本注释/****@paramargs*/关键字是被Java语言赋予特殊含义,具有专门用途的单词,比如class,int,double均为Java已经预设好的;组成关键字的字母全部小写,注意String不是关键字;goto与cons......
  • GSAP 基础
    GreenSockAnimationPlatform(GSAP)是一个业界知名的动画库,它被1100多万个网站使用,有超过50%的获奖的网站都是用了它。不管是在原生环境中,还是任意的框架中,你可以使用GSAP去让非常多的东西动起来。不管你是想要去让UI界面产生交互动画,还是SVG图形产生动画,甚至是Threejs还是Reac......
  • 记录--canvas基础操作
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助1.以下是一些有关使用Canvas的技巧:绘制基本形状:Canvas可以用于绘制各种基本形状,如矩形、圆形、线条等。使用fillRect()方法绘制矩形,使用arc()方法绘制圆形,使用lineTo()方法绘制线条等。绘制文本:使用fil......
  • awk的基础应用
    awk的基础应用AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一awk命令的基本格式为:awk-F“”‘{print'commands'}’filename-F:指定分隔符-vvar=val:在执行处理过程之前,设置一个变量var,并给其设备初始值为valawk保留字......