c语言基础
2021/6/2 18:24:17
本文主要是介绍c语言基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.HelloWorld
#include <stdio.h> //相当于java导包 standard io java.lang #include <stdlib.h> //standard lib main(){ //控制台打印语句 printf("HelloWorld\n"); //执行windows指令 system("pause"); }
2.C的基本数据类型
#include <stdio.h> #include <stdlib.h> main(){ //char, int, float, double, long, short, signed, unsigned signed int i = 3; //无符号只是注明最高位是数值位,但不会改变二进制表示的取值 unsigned int i2 = 4200000000; char c = 'a'; long long ago = -420000000; printf("i的值为%d\n", i); printf("i2的值为%u\n", i2); printf("c的值为%c\n", c); printf("short的长度为%d\n", sizeof(short)); printf("int的长度为%d\n", sizeof(int)); printf("long的长度为%d\n", sizeof(long)); printf("float的长度为%d\n", sizeof(float)); printf("double的长度为%d\n", sizeof(double)); printf("char的长度为%d\n", sizeof(char)); printf("long long的长度为%d\n", sizeof(long long)); printf("long int的长度为%d\n", sizeof(long int)); printf("short int的长度为%d\n", sizeof(short int)); system("pause"); }
3.输出函数
#include <stdio.h> #include <stdlib.h> main(){ /* %d - int %ld – long int %lld - long long %hd – 短整型 %c - char %f - float %lf – double %u – 无符号数 %x – 十六进制输出 int 或者long int 或者short int %o - 八进制输出 %s – 字符串 */ int i = 3; long int ld = 334; long long lld = 4200000000; short s = 245; printf("%d\n", i); printf("%ld\n", ld); printf("%lld\n", lld); printf("%hd\n", s); char c = 'a'; printf("%c\n", c); float f = 3.14666666; double d = 3.14666666; printf("%f\n", f); printf("%lf\n", d); printf("%#x\n", ld); printf("%#o\n", ld); //C的字符串是字符数组 //字符数组末尾一定有一个结束符“\0” char str[] = "sb光头鹏"; printf("%s\n", str); system("pause"); }
4.输入函数2
#include <stdio.h> #include <stdlib.h> main(){ printf("请输入班级人数:"); int count; //取出count的内存地址,把用户输入的数据保存在这个地址上 scanf("%d", &count); printf("请输入班级名称:"); //定义字符数组,必须指定长度 //C的数组不检测越界 char name[7]; scanf("%s", &name); printf("count的地址为%#x\n", &count); printf("name的地址为%#x\n", &name); printf("班级人数为:%d,班级名称为%s\n", count, name); system("pause"); }
5.内存地址
#include <stdio.h> #include <stdlib.h> main(){ int i; i = 3; printf("%d\n", i); printf("%#x\n", &i); system("pause"); }
6.内存修改器
#include <stdio.h> #include <stdlib.h> main(){ int time = 60; int i; printf("%#x\n", &i); for(i = time; i > 0; i--){ printf("剩余时间为%d\n", i); sleep(2500); } system("pause"); }
7.指针
#include <stdio.h> #include <stdlib.h> main(){ int i; i = 3; //定义一个指针变量 int* p = &i; //定义一个二级指针 int** q = &p; printf("%d\n", i); printf("%#x\n", &i); printf("%#x\n", p); printf("%d\n", *p); printf("%d\n", **q); system("pause"); }
8.常见错误
#include <stdio.h> #include <stdlib.h> main(){ int* p; int i = 3; double d = 3.14; p = &i; double* q = &d; printf("%#x\n", q); printf("%lf\n", *q); system("pause"); }
9.值传递和引用传递
#include <stdio.h> #include <stdlib.h> void function(int* p, int* q){ int temp = *p; *p = *q; *q = temp; } main(){ int i = 3; int j = 5; function(&i, &j); printf("i的值为%d\n", i); printf("j的值为%d\n", j); system("pause"); }
10.返回多个值
#include <stdio.h> #include <stdlib.h> void function(int* p, int* q){ *p = *p * 2; *q = *q * 2; } main(){ int i = 3; int j = 5; function(&i, &j); printf("i的值为%d\n", i); printf("j的值为%d\n", j); system("pause"); }
11.在主函数中获取子函数的变量的地址
#include <stdio.h> #include <stdlib.h> void function(int** p){ int i = 3; *p = &i; printf("子函数打印地址%#x\n", &i); } main(){ int* mainp; function(&mainp); printf("主函数打印地址%#x\n", mainp); printf("i的值为%d\n", *mainp); system("pause"); }
12.数组
#include <stdio.h> #include <stdlib.h> main(){ //char c[] = "hello"; int c[] = {1,2,3,4,5}; printf("%#x\n", &c[0]); printf("%#x\n", &c[1]); printf("%#x\n", &c[2]); printf("%#x\n", &c[3]); printf("%#x\n", &c); //字符数组的地址,就是第一个字符的地址 int* p = &c; //c+1表示位移一个单位,一个单位是几个字节根据指针类型决定 printf("第0个元素的值%d\n", *(p + 0)); printf("第1个元素的值%d\n", *(p + 1)); printf("第2个元素的值%d\n", *(p + 2)); printf("第3个元素的值%d\n", *(p + 3)); printf("两个地址的距离%d\n", (p + 3) - (p + 1)); system("pause"); }
13.指针长度
#include <stdio.h> #include <stdlib.h> main(){ //指针长度为4个字节,因为32位环境,内存地址长度就是4 printf("int*的长度是%d\n", sizeof(int*)); printf("double*的长度是%d\n", sizeof(double*)); int i = 3; int j = 5; //不是连续空间的地址,不能做指针运算 printf("%#x\n", &i); printf("%#x\n", &j); printf("两个地址的距离%d\n", &i - &j); system("pause"); }
14.申请堆内存
#include <stdio.h> #include <stdlib.h> main(){ //申请12个字节的堆内存 ,此函数返回堆内存的首地址 int* p = malloc(3 * sizeof(int)); *(p + 1) = 3; printf("%d\n", *(p + 1)); printf("%#x\n", p + 1); //释放堆内存 free(p); printf("%d\n", *(p + 1)); printf("%#x\n", p + 1); system("pause"); }
15.学号管理系统
#include <stdio.h> #include <stdlib.h> main(){ printf("请输入班级人数:"); int count; scanf("%d", &count); int i; //申请堆内存保存学生学号 int* p = malloc(count * sizeof(int)); for(i = 1; i <= count; i++){ printf("请输入第%d个学生的学号:", i); scanf("%d", (p + i - 1)); } printf("请输入插班生人数:"); int newCount; scanf("%d", &newCount); //重新申请堆内存 //在旧的堆内存后面扩展新的空间 //如果旧的堆内存后面空间都被占用了,那么就无法扩展 //系统会另觅他处,寻觅一个足够大的堆内存区域重新申请 //并且会把旧堆内存的数据拷贝至新的堆内存 //最后释放旧的堆内存 p = realloc(p, (count + newCount) * sizeof(int)); //输入插班生学号 for(i = count + 1; i <= count + newCount; i++){ printf("请输入第%d个学生的学号:", i); scanf("%d", (p + i - 1)); } for(i = 1; i <= count + newCount; i++){ printf("第%d个学生的学号为%d\n", i, *(p + i - 1)); } system("pause"); }
16.多级指针
#include <stdio.h> #include <stdlib.h> main(){ int i = 3; int* p = &i; int** q = &p; int*** l = &q; printf("%d\n", &i); printf("%d\n", **q); printf("%d\n", ***l); system("pause"); }
17.结构体
#include <stdio.h> #include <stdlib.h> void study(){ printf("熊大和光头鹏解锁了一个新姿势\n"); } //结构体中不能定义函数,但是可以定义函数指针 struct student{ int age; int height; char sex; void(*studyp)(); }; int main(){ struct student stu = {20, 190, 'f', study}; printf("%d\n", stu.age); //为了方便位移运算,结构体中各个属性的长度会被自动补齐 printf("%d\n", sizeof(stu)); //调用函数指针 stu.studyp(); struct student* stup = &stu; (*stup).studyp(); //引用这个指针指向的结构体的属性 stup->studyp(); system("pause"); }
18.联合体
#include <stdio.h> #include <stdlib.h> main(){ //联合体能表示这几种变量 union{int i; short s; char c} un; //联合体同时只能赋一个值,新值会覆盖旧值 //所以长度取决于最长的变量 un.i = 30; un.s = 20; printf("%d\n", un.i); printf("%d\n", sizeof(un)); system("pause"); }
19.枚举
#include <stdio.h> #include <stdlib.h> enum WeekDay { Monday = 10,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday }; int main(void) { //int day; //枚举作用:规定了变量的取值范围 enum WeekDay day = Thursday; printf("%d\n",day); system("pause"); return 0; }
20.自定义类型
#include <stdio.h> #include <stdlib.h> typedef int haha; main(){ haha i = 3; printf("%d\n", i); system("pause"); }
这篇关于c语言基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用