首页 > 其他分享 >鹏哥C语言初识课程总结

鹏哥C语言初识课程总结

时间:2024-10-31 18:09:58浏览次数:5  
标签:10 main return int 鹏哥 C语言 初识 printf include

常见单位和数据类型的范围

bit byte kb mb gb tb pb

#include<stdio.h>
int main(){
	printf("%d\n",sizeof(char)); //1  2^8 == 1024
	printf("%d\n",sizeof(int));  //4  2^32 == 4294967296 
//-2,147,483,648 到 2,147,483,647。10位数
	printf("%d\n",sizeof(float)); //4
	printf("%d\n",sizeof(double)); //8
	printf("%d\n",sizeof(long));  //4
	printf("%d\n",sizeof(short));  //2
	printf("%d\n",sizeof(long long));  //8
	return 0;
}

全局变量和局部变量

#include<stdio.h>
int a = 100;//全局变量
int main(){
    int a = 10;//函数里的局部变量,可以和全局变量名字相同,但是局部优先
	printf("%d",a);//10
	return 0;
}

变量的作用域

局部变量的作用域

局部范围【函数里】

#include<stdio.h>
int main(){

{
	int a = 100;
	printf("%d",a);
}
printf("%d",a);
	return 0;
}


全局函数的作用域

作用域整个工程

#include<stdio.h>
int a = 100;//全局变量
int main(){

{

	printf("%d ",a);
}
printf("%d",a);
	return 0;
}

变量的生命周期 ~= 变量的作用域

局部变量的生命周期

进入作用域开始,离开作用域结束

全局变量的生命周期

整个工程

常量

  • 字面常量【只有这个常量可以修改】
#include<stdio.h>
int main(){
int a = 20;
 a = 50;
printf("%d",a);//50
	return 0;
}

可以修改a的值

  • const修饰的常变量
#include<stdio.h>
int main(){

const int a = 20;
 a = 50;//报错,常变量 不可更改
printf("%d",a);
	return 0;
}

  • define定义的标识符常量
#include<stdio.h>
#define max 100
#define str "qwert"
//没有数据类型
int main(){

max = 123; //error 不可修改
// a = 50;
printf("%d",max);
printf("%s",str);
	return 0;
}

  • 枚举常量
#include<stdio.h>
//#define max 100
//#define str "qwert"
enum Color{
	RED,//枚举常量
	GREEN,//枚举常量
	BLUE,//枚举常量
};
int main(){
enum Color c = BLUE;//2
enum Color a = RED;//0
//printf("%s",str); error,其实枚举常量是一个数字,有点像是数组
printf("%d",c);//2
	return 0;
}

字符串

C语言里面没有字符串类型
结尾默认有\0

#include<stdio.h>
#include<string.h>
int main(){
char arr1[] = "abcd";
char arr2[] = {'a','b','c','d'};
char arr3[] = {'a','b','c','d','\0'};
printf("%s ",arr1);
printf("%s ",arr2);//随机值,没有\0结束
printf("%s ",arr3);//与arr1等价
printf("%d\n",strlen(arr1));//4    \0不算   strlen 使用需要string.h 
printf("%d\n",strlen(arr2));//随机值
printf("%d\n",strlen(arr3));//4    \0不算
	return 0;
}

函数

#include <stdio.h>
int ADD(int a, int b){//ab是形参
	int z = 0;
	z = a + b;
	return z;
//也可以直接 return a + b;
}
int main(){
	int num1 = 0;
	int num2 = 0;
	scanf("%d %d",&num1,&num2);//num1,num2是实参
	int sum = ADD(num1,num2);
	printf("%d",sum);
	return 0;
}

数组

一个重要思想:通过下标访问数组里的元素,用循环产生下标

操作符

单目操作符【对一个变量进行操作】

! - + & sizeof ~ -- ++ * (类型)

  • !逻辑非
#include<stdio.h>
int main(){
	int a = 22;
	int b = 0;
	printf("%d ",!a);//0
	printf("%d",!b);//1
	
	return 0;
}
  • -负值
#include<stdio.h>
int main(){
	int a = 22;
	printf("%d ",-a);//-22
	return 0;
}

  • +没有什么用,1==+1 -1 == +(-1)
  • sizeof
    单位byte
#include<stdio.h>
int main(){
	int arr[10] = {0};
	printf("%d ",sizeof(arr));//40 计算整个数组大小
	printf("%d ",sizeof(arr[0]));//4 计算数组第一个元素占的字节数
	printf("%d ",sizeof(arr) / sizeof(arr[0]));//计算数组元素有多少个
	return 0;
}

  • ++ --
    区别i++ 与 ++i
    前者先赋值[原来的值赋给别人],再自增【自己最后在自增改变自己】
    后者先自增,再复制
#include<stdio.h>
int main(){
	int a = 10;
	int b = a++;
// b = 10 a = 11
	int c = ++a;
// a = 12 c = 12
	printf("%d %d",b,c);//10 12
	return 0;
}
#include<stdio.h>
int main(){
	int a = 10;
	int b = a++;
// b = 10 a = 11
	int c = b++;
// c = 10 b = 11
	printf("%d %d %d\n",a,b,c)// 11 11 10
	return 0;
}

#include<stdio.h>
int main(){
	int a = 10;
	int b = ++a;
// a = 11 b = 11
	int c = ++b;
// b = 12 c = 12
	int num1 = 9;
	int num2 = --num1;
// num1 = 8 num2 = 8
	int num3 = --num2;
// num2 = 7 num3 = 7
	int num4 = --num3;
// num3 = 6 num 4 = 6
	printf("%d %d %d\n",a,b,c);//11 12 12
	printf("%d %d %d %d\n",num1,num2,num3,num4);//8 7 6 6 
	return 0;
}
  • (类型)
    强制类型转化
#include<stdio.h>
int main(){
	int a = 21;
	int b = 4;
	printf("%f ",(double)a/b);//5.25
	return 0;
}

逗号运算符

都计算,但是只打印最远的那个

#include<stdio.h>
int main(){
int a = 4;
int b = 12;
int c = 6;
int tmp = (a++,b/a,c--);
//都运行了,只是只打印了c--
// a=5 
int res = (c=b/a,a=b+c,c-a);
// c = 2 ,a = 14 , c-a==-12
printf("%d %d",res,tmp);//-12  6
	return 0;
}

下标引用操作符[]

#include<stdio.h>
int main(){
int arr[10] = {0,1,2,1,3,4,5,6,6,8};//声明数组,arr[常量&null]
int n = 4;//调用数组里的元素,可以写成a[变量]
printf("%d",arr[n]);//3
	return 0;
}

函数调用操作符()

#include <stdio.h>
int ADD(int a, int b){//ab是形参
	return a + b;
//也可以直接 return a + b;
}
int main(){
	int num1 = 0;
	int num2 = 0;
	scanf("%d %d",&num1,&num2);//num1,num2是实参
	int sum = ADD(num1,num2);//ADD(),调用函数,()就是函数调用操作符
	printf("%d",sum);
	return 0;
}

条件操作符【三目操作符】

#include<stdio.h>
int main(){
int a = 100;
int b = 20;
int r = a > b? a : b;//第一个是条件,满足,r = a,反之,r = b
printf("%d",r);
	return 0;
}

指针

内存

内存会分成一个个的内存单元(一个内存单元大小1byte),每个内存单元都有自己的编号【地址,指针】
32位机器上,地址是三十二位,4byte
64……,8byte
之前声明数据类型很浪费
img
内存地址是2进制
太长了,用16进制打印

#include<stdio.h>
int main(){
	int a = 10;
//	&a;
printf("%p",&a);//打印地址用%p
	return 0;
}

指针变量

存放地址的变量
img

#include<stdio.h>
int main(){
	int a = 10;
//	&a;

int* p = &a;//p就是指针变量
printf("%p",p);
printf("%p",&a);//二者等价
	return 0;
}

解引用操作符*与取地址操作符&【一去一来,呼应】

通过*与&修改变量数值,但是地址不变

#include<stdio.h>
int main(){
	int a = 10;
    int* p = &a;//p就是指针变量
    *p = 20;
printf("%d",a);//20
	return 0;
}

指针变量大小

放地址的,只和机器位数有关

#include<stdio.h>
int main(){
	printf("%d ",sizeof(char*));//4
	printf("%d ",sizeof(int*));//4
	printf("%d ",sizeof(float*));//4
	printf("%d",sizeof(double*));//4
	return 0;
}

结构体

.操作符

结构体对象.成员名

#include<stdio.h>
struct stu//一个类型
{
	char name[20];
	int age;
	char sex[10];
	char tele[12];
};//就像是盖房子的图纸
int main(){
	struct stu s= {"zhangsan", 20, "man", 123457756};
	printf("%s %d %s %d",s.name ,s.age ,s.sex ,s.tele);
	
	
	
	return 0;
}

->箭头操作符

结构体指针变量 -> 成员名

#include<stdio.h>
struct stu//一个类型
{
	char name[20];
	int age;
	char sex[10];
	char tele[12];
};//就像是盖房子的图纸
void functionPrint(struct stu* ps){
	printf("%s %d %s %d\n",(*ps).name ,(*ps).age ,(*ps).sex ,(*ps).tele);//啰嗦,与下面等价 
	printf("%s %d %s %d",ps->name ,ps->age ,ps->sex ,ps->tele);//箭头操作符
}
int main(){
	struct stu s= {"zhangsan", 20, "man", 123457756};
	functionPrint(&s);
	
	
	return 0;
}


标签:10,main,return,int,鹏哥,C语言,初识,printf,include
From: https://www.cnblogs.com/GJ504b/p/18518581

相关文章

  • C语言和Julia在数据分析和科学计算上的区别
    ###开头段落在比较C语言和Julia在数据分析和科学计算上的差异时,主要区别体现在执行效率、易用性、生态系统、以及并行计算能力。C语言以其高度的执行效率和广泛的应用背景著称,被广泛用于系统编程和性能敏感的应用。相对而言,Julia设计之初就致力于科学计算和数据分析,提供了易用......
  • 嵌入式课程day04-C语言运算符和选择结构
    2.3运算符2.3.1运算符介绍运算符:具有一定运算规则的符号。操作数:运算符的操作对象。~a   ---a就是~运算符的操作数。---单目运算符:运算符只有一个操作数3+5---35就是+运算符的操作数。---双目运算符:运算符有2个操作数    表达式1?表达式2:表达......
  • 重温c语言之,7天开整,就是随便的写写,第一天
    一:转义字符\t是一个字符,在printf里面,只占一个位置;其他什么的抽象字符,用一个'\'+抽象字符就可以出现;\ddd这个是8进制的,可以转成10进制的,之后参考ASCLL码表即可二:枚举类型的函数与数组一样,有下标,都是从0开始的三:数组可以先不在【】这里面填写多少,但是需......
  • C语言学习----3
    #一些无关的小内容这个是作业的一个代码 再次可见printf %d代表对应的数据 #字符串 以上为字符串的大概含义我们用char来对字符以及字符串进行定义 printf中用%s来进行表其中的arr[]是表示数组(里面存放了很多字符)详细看下面的图片arr[]括号里一般放数据的......
  • 共享栈的实现(C语言)
    作业三一、共享栈的ADT1、总体ADT的函数总览voidInit_ShStack(ShStack&S); //1.初始化共享栈boolEmpty_Stack1(ShStackS); //2.1号栈判空boolEmpty_Stack2(ShStackS); //2.2号栈判空voidPush_Stack1(ShStack&S,ElemTypex); //3.1号栈入栈......
  • 3.C语言中scanf 和printf的重点介绍(续10/25篇)
    文章目录一、printf1.1基本用法1.2占位符1.3占位符列举1.4输出格式1.4.1限定宽度1.4.2总显示正负号1.4.3限定小数位数1.4.4输出部分字符串二、scanf2.1基本用法2.2scanf的返回值2.3占位符2.4赋值忽略符总结一、printf1.1基本用法printf()的作用......
  • C语言符号意义大全
    C语言符号意义大全32个关键字及其含义:auto:声明自动变量一般不使用 double:声明双精度变量或函数 int:声明整型变量或函数 struct:声明结构体变量或函数 break:跳出当前循环 else:条件语句否定分支(与if连用) long:声明长整型变量或函数   switch:用于......
  • (C语言)数组
    目录一维数组1>.  定义2>. 数组的下标3>. 数组的初始化4>. 计算数组的大小    1)strlen    2)sizeof二维数组1>. 定义2>. 初始化    1)只有一个{}    2)多个{}变长数组数组定义:为了存放多个相同类型的元素,创建了数组;......
  • 明解c语言第四章while语句练习4-6和练习4-7
    就在前几天我学习了一个do语句,接着这几天学习了一个while语句,看完书来写练习4-6和练习4-7感觉一头雾水,可能是今天中午没睡觉的缘故我脑子里空空的,于是对于练习4-6我求助了ai练习4-6:编写一段程序,按照升序显示出小于输入值的所有真偶数ai是这样写的//编写一段程序,按照升序显示......
  • C语言基础
    ifelseifelse后面可以没有花括号,没有的话只能控制一条语句(遇到的第一个分号)可以单独使用if,if后面可以没有else,但是else前面必须有if练习:题目:说出以下代码的执行结果intmain(){inta=10;printf("0");if(a>10);printf("1");elseprintf("4");......