- 博客(19)
- 收藏
- 关注
原创 C语言学习琐记二
51. 文件包含命令是C语言程序常用的一个预处理命令,它的格式:#include (文件名),它的功能就是将指定的被包含的内容放置在文件包含命令出现的地方,一般写在一个文件的开头,被包含的.h文件中往往是一些该程序所需要的一些说明或定义,它包括符号常量的定义、类型定义、带参数的宏定义、数组、结构、联合和枚举的定义等等,它还包含外部变量的定义,函数的定义和说明等。52. 使用
2017-08-07 09:52:29
225
原创 C语言学习琐记一
1. 字符串”\a”\b””表示由a”b”组成的字符串。当双引号本身作为字符处理时,前面要加一个反斜线,以便与定界符的双引号加以区别。2. 字符常量存放在内存中占一个字节的空间,字符串常量存放在内存中占有的字节个数是字符个数加1,因为每个字符串存放在内存中都有一个结束符’\0’。3. 获得一个字符的函数getchar( );4. 获得一个字符串的
2017-08-07 09:51:16
274
原创 李白打酒(包含路径)
话说大诗人李白,一生好饮。幸好他从不开车。 一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱: 无事街上走,提壶去打酒。 逢店加一倍,遇花喝一斗。 这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。 请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb
2017-08-07 09:02:25
230
原创 关于宏需要注意的问题
关于宏需要注意的问题1.#define宏与函数之间的优劣:宏的执行速度比函数快得多,函数需要调用、返回等操作。函数只能对特定的类型操作,而宏是类型无关的,宏还可以实现一些函数无法实现的操作。但宏需要将所有代码拷贝到调用程序中,增加了代码长度。 所以:宏比较适合执行简单的计算,如求2个值中的较大值。 如果宏代码比较长,并且频繁被调用,还是声明为函数比较好。2.预定义
2017-08-06 13:56:40
515
原创 指针、内存操作中的一些其它注意点
指针、内存操作中的一些其它注意点 (1) 如下例子: int *a = 0; 表达式*a 等于多少?a是一个NULL指针,对它解引用是错误的。 但有些环境不会在运行时捕捉到这个错误,而是去访问内存位置0的内容,这是 一个隐患。所以,在解引用之前必须先对指针进行有效性检查。 内存操作函
2017-08-06 13:53:10
243
原创 指针、数组中的注意点(多重指针,指针数组,多维数组)
指针、数组中的注意点(多重指针,指针数组,多维数组)(1) 数组名是一个指向某某型的常量指针(是常量!),它的值是第一元素的地址。但有两个例外:被用作sizeof或&的操作数。前者返回整个数组的长度;后者产生一个指向数组的指针(不是指向某某型的常量指针)。(2) 以下3者等价:array[2]; 2[array]; *(array + 2);(3)
2017-08-06 13:51:15
900
原创 基本类型的赋值、转换问题
基本类型的赋值、转换问题(1) c中是不是也和Java一样,存在隐式转换和强制转换?有区别吗?有区别。C中的隐式转换就是“整型提升”。C中的“整型提升”仅指:表达式中的操作数类型(注意:是表达式中的char和short在使用之前被转换为int。)>=int型的类型的提升,被称为寻常算术转换:寻常转换应该遵循:int – unsigned int – long
2017-08-06 13:49:32
534
原创 函数指针定义方式
函数指针 int *f ( ); f是一个函数,返回整型指针。 int (*f)( ); f是一个函数指针,它所指向的函数返回一个整数值。 int *( *f )( ); f是一个函数指针,它所指向的函数返回一个整型指针。 int f( )[ ]; (错误!)f是一
2017-08-06 13:47:12
3250
原创 C中常用的字符、字符串处理函数
C中常用的字符、字符串处理函数(注:size_t定义在stddef.h中,代表无符号整数。)关于查找:(1) size_t strspn( char const *str, char const *group); p182返回str起始部分匹配group中任意字符的字符数(也可理解为str中第一个不在group中出现的字符的索引值)。如下:int len1 = s
2017-08-06 13:43:24
241
原创 关于提高程序效率的一些建议
关于提高程序效率的一些建议(1) 尽量使用编译时求值的表达式(如常量表达式),而减少使用运行时求值的表达式(代价更高)。(2) 在for循环里减少计数器的使用(可能的话),如下:#define SIZE 50int x[SIZE];int y[SIZE];void try(){ register int *p1, *p2; f
2017-08-06 13:37:59
232
原创 数组和指针的比较
数组和指针的比较(1)指针变量的地址:指向内存中一个存储单元的第一个字节的地址。数组名的地址值,就是该数组的第一个元素的第一个字节的地址。(2)指针变量有基类型,相当于数组的类型名。(3)指针变量的地址值不可改变,即指针变量指向的存储单元的地址值是固定的,不可改变,如int *p,a;p=&a;则变量a的地址是不可改变的。也不可给数组名的地址重新赋值。如数组名为a的数组:a=&x;或a
2017-08-06 13:35:03
406
原创 一维数组的定义和一维数组的引用
一维数组的定义和一维数组的引用内存中一串连续的存储单元(变量),叫数组。指针移动和比较只有在一串连续的数组中才有意义。当数组中每个变量只带一个下标时,为一维数组。定义一个一维数组:类型名 数组名【常量表达式】 如:int a[8];说明: ①定义一个一维整型名为a的数组。 ②方括号中规定此数组有8个元素,(a【0】-a【7】),不存在a【8】这个元素。
2017-08-06 13:33:15
1938
原创 排序1——冒泡排序
#include // 交换函数void swap (int a[], int i, int j){int tmp = a[i];a[i] = a[j];a[j] = tmp;}// 打印数组void printA (int *a, int len){int i;for (i = 0; i {printf ("%d ", a[
2017-08-06 13:22:00
139
原创 论如何掌握一个程序
一些常见的需要算法知识的C语言程序: 判断一个数字是否是素数 判断一个数字是否是回文数 编程实现求一个十进制数字的二进制形式 求一个数字的每位是奇数的数字取出来组合形成的新数字 求一个数字倒过来的数字 >>如何看懂一个程序,分三步: 1. 流程 2. 每个语句的功能 3. 试数 如
2017-08-06 13:08:23
210
原创 scanf的几种基本用法
scanf用法1 _ 不含输入控制符的用法 # include int main (void){ int i; scanf("%d", &i); prinf("i =%d\n", i); return 0;} scanf用法2 _ 含输入控制符的用法 # include int main (void){
2017-08-06 13:01:43
885
转载 基于C语言sscanf()函数的深入理解
基于C语言sscanf()函数的深入理解sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscan
2017-08-06 12:53:26
655
转载 基于C语言sprintf函数的深入理解
基于C语言sprintf函数的深入理解printf 可能是许多程序员在开始学习C语言时接触到的 第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf了解多吗?在将各种类 型的数据构造成字符串时,sprintf的强大功能很少会让你失望。由于sprintf跟printf在用法上几乎一样,只是打印的目的地不同而已,前者打
2017-08-05 23:29:59
244
原创 嵌入式Linux C编程
一.前言一切,都想从不一样做起。大学,原以为会和我当时高中想象的那样,可以谈场轰轰烈烈的恋爱,可以自由自在的旅行,可以忘乎所以,尽己之所兴。如今,大三结束。蓦然回首,却发现自己浪费了那么多改变自己的机会。如今,大学只剩最后一年,我要用这最后的时间去弥补曾经所浪费的一切,从现在开始,朝着自己的目标勇敢向前。大学期间,最爱逛图书馆,经常走到人工智能的专业书前,说起来,自己报自动化这个专业也是由
2017-07-11 22:50:41
327
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人