C语言
Master_Yoda
Named after the name of God,by your hands!
展开
-
C语言定义指向多维数组的指针
最近看了一下C语言的指针,突然发现指向多维数组的指针有点奇怪,这里总结一下:首先我们都知道,对于一维数组比如说 int a[10],a就是该数组的首地址,如果我们想定义一个指向该数组的指针我们可以用如下定义:int * p;然后p=a;这样的话指针p就指向了数组a的首地址。但是如果我们定义一个多维数组,如: int zippo[4][2];数组名zippo是数组元素的首地址,但是我们如果还用上面的...原创 2018-05-17 21:35:03 · 5751 阅读 · 0 评论 -
C语言之结构体(struct)
* 1.向函数传递结构的信息* 1.传递结构成员 2.传递结构的地址 3.传递结构(对于有的编译器,可能不匀速把结构作为参数传递给函数)2.其他的结构特性 现在的C允许把一个结构赋值给另一个结构,但是数组不能这样做,也就是说,如果n_data和o_data都是相同类型的结构,可以这样做o_data=n_data;还可以把一个结构初始化为相同类型的另一个结构 ...原创 2018-07-16 15:27:06 · 253 阅读 · 0 评论 -
C语言存储类别
1.作用域在C语言中,变量的作用域可以是块作用域、函数作用域、函数原型作用域或文件作用域块作用域块是指用一堆花括号括起来的代码区域,定义在块中的变量具有块作用域,块作用域变量的可见范围是从定义处到包含该定义的块的模块结束。函数作用域可见范围是整个函数。函数原型作用域用于函数原型中的形参名,其作用范围是从形参定义处到原型声明结束,这也解释了为什么在定义函数的时候可以没有形参...原创 2018-07-08 12:24:10 · 1390 阅读 · 0 评论 -
C语言字符串常用的输入、输出函数scanf()和printf()、gets()和puts()、fgets()和fputs()
最近在看C语言,这里总结一下有关字符串的输入和输出函数1、gets()和puts()函数首先gets()函数读取整行输入,直到遇到换行符,然后丢弃换行符,储存其余字符,并在这些字符串的末尾添加一个空字符使之成为一个字符串,而puts()函数用来显示字符串,并在末尾添加换行符。但是gets()函数并不安全,它无法检查输入的字符串的长度,当输入的字符串过长的时候,会导致缓冲区溢出,...原创 2018-06-14 10:55:31 · 1391 阅读 · 0 评论 -
C语言字符串数组两种不同的初始化方式的区别
创建一个字符数组很方便,可以通过数组下标访问多个不同的字符串,创建字符串数组既可以通过Char数组创建,也可以通过指向字符串的指针数组创建....原创 2018-06-07 10:43:53 · 5590 阅读 · 0 评论 -
c语言复合字面量
C99新增了复合字面量,字面是除符号常量外的常量,声明格式如下:(int [2]){10,20}即去掉声明中的数组名,留下的int [2]即使复合字面量的类型名,初始化有数组名的数组时可以省略数组的大小,复合字面量也可以,编译器会自动计算数组的大小。由于复合字面量是匿名的所以不能先创建然后在使用它,必须在创建的同时使用它。如:int *pt1;pt1=(int[2]){10,20};复合字面量是提...原创 2018-05-29 21:29:02 · 1948 阅读 · 0 评论 -
C语言字符串
用双引号括起来的内容称为字符串字面量,也叫做字符串常量。双引号中的字符和编译器自动加入末尾的\0字符,都作为字符串储存在内存中,并且从ANSIC标准起,如果字符串字面量之间没有间隔,或者用空白字符分隔,C会将其视为串联起来的字符串字面量。如:char greeting[50]= "Hello , and"" how are "" you";等价于:char greeting[50]= "Hell...原创 2018-06-03 22:27:10 · 622 阅读 · 0 评论 -
C语言const在指针上的应用
最近在看C语言的指针部分,突然发现了一个很有意思的现象,就是const在指针中的应用:首先,const可以声明一个常量类似于#define的宏定义,但是const还可以声明const数组、const指针和指向const的指针。const 数组比较简单,就是声明数组以后其值就没法再改变了。而指向const的指针不能用于改变值,如:double rates[5]={22.3,34.5,34,23,56...原创 2018-05-14 20:41:51 · 4199 阅读 · 1 评论 -
C语言指针解引用注意事项
在指针的操作中,间接运算符*,也被称为解引用运算符。注意事项最重要的一点是:不要解引用未初始化的指针如:int * pt;//未初始化的指针*pt=5;//这句话是错的为什么是错的,因为第2行的意思是把5储存在pt指向的位置。但是pt未被初始化,其值是一个随机值,所以不知道将5储存在何处。因为:创建一个指针时,系统只分配了储存指针本身的内存,并未分配存储数据的的内存,因此,在使用指针之前,必须先用...原创 2018-05-14 11:03:47 · 2996 阅读 · 0 评论 -
C语言数组指定初始化器
C99增加了一个新特性:指定初始化器。利用该特性可以初始化指定的数组元素。例如,只初始化数组中的最后一个元素。对于传统的的C初始化语法,必须初始化最有一个元素之前的所有与还俗,才能初始化它:int arr[6]={0,0,0,0,0,212];//传统的语法而使用C99的新特性:int arr[6]={[5]=212};这样写和上面的结果是一样的,由于前几个元素没有初始化,所以编译器会自动把它们设...原创 2018-05-13 12:44:13 · 2891 阅读 · 0 评论 -
C预处理器
1.明示常量 #define预处理指令#define从#开始运行,到后面的第一个换行符为止,在预处理开始前,编译器会把多行物理行处理为一行逻辑行,每行逻辑行都由三部分组成:第一部分是#define指令本身第二部分是选定的缩写,也称为宏(代表值的话就是类对象宏)第三部分是替换列表或替换体例如:#define PX printf(“x is %d.\n”,x)2.类函数宏...原创 2018-07-27 11:07:54 · 333 阅读 · 0 评论