c语言

C语言的面向对象

一曲冷凌霜 提交于 2021-02-08 05:30:05
面向对象的思想,不应受某种语言的限制,面向过程的C语言同样如此。C里面没有类,可以用结构体;没有类的方法,可以使用函数指针; 最重要的,没有继承的概念, 怎么解决呢? 想想强制类型转换,为什么能转换成功呢?这就为实现继承做了基础,加上前面有几篇写过可执行文件的结构,将在后面给出一种方式。 1.一个简单的类 #include<stdio.h> #include<stdlib.h> typedef struct Man { int age; void (*sayHi)(); }Man; void manSayHi(){ printf("hi ... \n"); } Man* createMan(){ return (Man*)malloc(sizeof(Man)); } void deleteMan(Man* m){ free(m); } Man* initMan(Man* m,int age){ m->age = age; m->sayHi = manSayHi; return m; } int main(){ int a; Man* m = initMan(createMan(),30); m->sayHi(); printf("man age = %d \n",m->age); deleteMan(m); //这里只是让弹出的命令窗口,等待一个数值,不消失。 scanf_s("

小蚂蚁学习C语言(17)——C语言指针——昨天内容的总结、指针和一维数组

元气小坏坏 提交于 2021-02-08 05:23:16
(接上篇 http://my.oschina.net/woshixiaomayi/blog/543361 ) * 的含义: 1,乘法 2,定义指针变量 int * p  3,指针运算符 该运算符放在已经定义好的指针变量前面 如果p是一个已经定义好的指针变量 则 *p表示 以p的内容为地址的变量 如何通过背调函数修改主调函数普通变量的值 1,实参必须为该普通变量的地址 2,形参必须为指针变量 3,在背调函数中通过 *形参名 = …… 的方式就可以修改主调函数相关变量的值。 数组和指针 指针和一维数组的关系 一维数组名 一维数组名是个指针常量 它存放的是一维数组第一个元素的地址,用代码 证明: # include <stdio.h> int main(void) { int a[5] = {1, 2, 3, 4, 5}; printf("%#X\n",a); printf("%#X\n",&a[0]); return 0; } /* 在VC6.0++中的结果是 ====================================== 0X18FF2C 0X18FF2C ====================================== 结论: 可知一维数组名存放的就是该一维数组第一个元素的地址。 */ 今天背了一天的单词,好累,今天就到这里吧,明天继续努力吧。 <( ̄︶ ̄

小蚂蚁学习C语言(19)——C语言指针——指针变量的运算和占用几个字节

喜你入骨 提交于 2021-02-08 02:52:54
指针变量的运算 指针变量不能相加,不能相乘,不能相除,只能 相减 如果两个指针变量指向的是同一块连续空间中的不同存储单元,则这两个指针变量才可以相减 一个指针变量占用几个字节? sizeof(数据类型) 返回值就是该数据类型所占用的字节数 例子:sizeof(int) = 4 sizeof( char ) = 1 sizeof(变量名) 功能:返回值是该变量所占的字节数 假设p指向char类型变量(1个字节) 假设q指向int类型变量(4个字节) 假设r指向double类型变量(8个字节) p q r 本身所占的字节数是否一样? 答案:p q r本身所占的字节数是一样的。 总结: 一个指针变量,无论它指向的变量占几个字节,该指针变量本身只占4个字节。(跟地址线的个数是相呼应的)。 因为指针变量本身保存的是一个地址,而这个地址的位数最多也就32位(32位的机子),所以4个字节乘以8位,就是32位了,正好能够满足存放一个最大地址的需要。 一个变量的地址使用了该变量首字节的地址来表示的。指针变量是通过数据类型和首字节的地址拿出的所有数据 *p 来源: oschina 链接: https://my.oschina.net/u/1423209/blog/545570

ubuntu下C语言操作mysql

喜欢而已 提交于 2021-01-14 07:12:43
在Ubuntu下费了好长时间终于让C操作MySQL成功了,在此把方法记下来。 先安装MySQL 代码: sudo apt-get install mysql-server mysql-client 再装开发包 代码: sudo apt-get install libmysqlclient15-dev 安装完以后,C代码里添加头文件 代码: #include <mysql.h> 编译方法: 代码: gcc $(mysql_config --cflags) xxx.c -o xxx $(mysql_config --libs) 来源: oschina 链接: https://my.oschina.net/u/198474/blog/34214

字符串(C语言)

青春壹個敷衍的年華 提交于 2021-01-07 05:45:45
1.如果要声明一个字符串“NoMasp”,下面这行代码错在哪里? char name[] = { 'N' , 'o' , 'M' , 'a' , 's' , 'p' }; 如果想声明的是字符串,就需要在初始化时在结尾加上一个’\0’。或者可以直接用下面这张方式: char name[] = "NoMasp" ; 2.以下这段代码会打印出什么? #include <stdio.h> int main() { char nomasp[]= "I like C language." ; char *ptr; ptr=nomasp; ++ptr; nomasp[ 6 ]= '\0' ; puts (++ptr); return 0 ; } 在ptr执行自增操作之后就是指向字母’I’后的空格,而后在索引为6的地方改为’\0’因此字符串在这里就被截断了。所以最后打印出来的是”like”。 3.’A’一定比”A”更加节省空间吗? 不一定。字符常量是存储在int中的,也就是说’A’会占用2个或4个字节,虽然它’A’实际上只使用了一个字节来存储它的编码。而”A”则使用了2个字节,一个字节用来保存’A’,另一个字节用来保存’\0’。 char c = 'A' ; c作为字符变量则占用1个字节。 为使本文得到斧正和提问,转载请注明出处: http://blog.csdn.net/nomasp 版权声明

C语言-第1章、 程序设计基础与C语言概述

…衆ロ難τιáo~ 提交于 2020-11-22 05:27:00
1_3 C结构与书写规则 _3-1 C程序的基本结构 【 例1-1 】 在屏幕上显示出一行信息: #include <stdio.h> int main() { printf("The first C program!\n"); return 0; } 程序成分说明: (1)注释 注释用来向用户提示或解释代码的含义,提高代码的可读性。注释分为以“//”开始的单行注释和以“/*”开始,以”*/“结束的块式注释;注释可以出现在程序的任何位置。需要注意的是:注释是给用户看的。注释不会被编译,也不会生成目标程序,即注释部分对程序的运行不起任何作用。 (2)编译预处理命令 在C程序中,以“#”开头的命令行是C程序的编译预处理命令,即在程序被编译之前就由编译预处理程序对其进行预处理。 注:stdio是standard input&output的缩写(标准输入输出),只要在程序中用到了C系统库函数中的输入/输出函数,就一定要在程序的开头写一行:#include<stdio.h>。.h表示该文件的性质是头文件(都要放在各文件模块的开头)。 (3)函数 (4)语句 【例1-2】输出两个整数中的较大数。 #include <stdio.h> int main() { int x,y,z; x=10; y=20; if(x>y) z=y; else z=y; printf("max=%d\n",z);

C语言十进制转换二进制八,十六进制。二进制转十进制。

拈花ヽ惹草 提交于 2020-11-11 03:23:03
C语言十进制转换二进制八,十六进制。 十进制转二进制有个计算公式,就是除以2取余再倒序显示余数就是了。可以根据公式写。八制进公式也同理。十六进制有点不一样,大于9的要转为字母。A,B,C,D,E,F。 #include <stdio.h> void totwo(); void toeight(); void tosixt(); int main() { totwo(); toeight(); tosixt(); return 0; } void totwo() { int p,m,n,a[100]; printf("十进制转二进制\n"); printf("输入十进制数:"); scanf("%d",&p); for(m=0;p>0;m++) { a[m]=p%2; p=p/2; } for(n=m-1;n>=0;n--) printf("%d",a[n]); printf("\n"); } void toeight() { int p,m,n,a[100]; printf("十进制转八进制\n"); printf("输入十进制数:"); scanf("%d",&p); for(m=0;p>0;m++) { a[m]=p%8; p=p/8; } for(n=m-1;n>=0;n--) printf("%d",a[n]); printf("\n"); } void tosixt()

新人博客,第一周作业

本小妞迷上赌 提交于 2020-04-08 06:45:50
2.1你对计算机科学与技术专业了解 怎么样? 计算机科学与技术这个专业主修大数据技术导论、数据 采集、Web前/后端实践等课程,未来的5G世界,互 联网发展的顶峰时期,而计算机作为载体,发展也迎 来高峰,计算机科学与技术这个专业也会水涨船高。 2.2 你了解C语言吗?C语言应用有哪些? 语言有以下几个特点 (1)拥有简洁的语言 (2)具有结构化的控制语句 (3)有丰富的数据类型和丰富的运算符 C语言一般普遍应用于底层开发,但也保持着跨平台的 特性。简单的说C语言就是起桥梁辅助作用。 2.3你希望在这个专业学到哪些内容? 我想在这个专业把C语言学好并熟练的运用,还想把计算机的组成学会,有哪些东西组成,还可以熟练的组装。 2.4和学长学姐交流,你打算怎样规划你的大一生活? (1)编程的话我计划我每天都在一个小时左右,假期翻倍。 (2) 准备在大一把英语学好,准备大二的四级考试每天早上花一个小时的时间去读英语。 (3)并利用一个小时的时间去打篮球,学习和锻炼并进,充实我的大一生活 2.5[pta作业截图] ! ( https://image.3001.net/images/20190923/1569251162701.jpg ) 来源: https://www.cnblogs.com/hql201661/p/11552818.html

C语言 · 分糖果

↘锁芯ラ 提交于 2020-04-08 06:36:40
历届试题 分糖果 时间限制:1.0s 内存限制:256.0MB 问题描述   有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:   每个小朋友都把自己的糖果分一半给左手边的孩子。   一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。   反复进行这个游戏,直到所有小朋友的糖果数都相同为止。   你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。 输入格式   程序首先读入一个整数N(2<N<100),表示小朋友的人数。   接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2) 输出格式   要求程序输出一个整数,表示老师需要补发的糖果数。 样例输入 3 2 2 4 样例输出 4 1 #include<stdio.h> 2 int main(){ 3 int i,N,a[100]; 4 int answer=0;//计数器 5 scanf("%d",&N); 6 for(i=0;i<N;i++){ 7 scanf("%d",&a[i]); 8 } 9 while(1){ 10 //若小朋友的糖果数相等,结束 11 for(i=1;i<N;i++) 12 { 13 if(a[i]!=a[0]) 14 break; 15 } 16 if(i==N)//检查到最后一位,结束 17 break; 18 /

C语言实现顺序表(增删)

亡梦爱人 提交于 2020-04-07 23:43:44
内容十分简单,不做过多的文字赘述。 #include<stdio.h> #define MAXSIZE 50 #define ElemType char typedef struct{ ElemType data[MAXSIZE]; int length; }sqlist; void Init(sqlist* l){ l->length = 0; } void CreateList(sqlist* l){ } /** * 顺序表的插入 * :平均时间复杂度O(n) * */ int ListInsert(sqlist* list,int i,ElemType e){ if(i<0||i>list->length+1){ printf("error:位置错误!"); return 0; }else if(list->length>=MAXSIZE){ printf("存储空间已满!"); return 0; }else{ for(int j=list->length;j>=i;j--){ list->data[j] = list->data[j-1]; } list->data[i] = e; list->length++; return 1; } return 0; } /** * 顺序表删除 * 平均时间复杂度:O(n) * */ int ListRemove(sqlist*