
C语言
杨鲜生
纸上得来终觉浅,绝知此事要躬行。
展开
-
C语言中scanf与getchar的用法
最近看C语言书,看到getchar()函数后,和scanf()函数有点混淆,下面就来区分一下这两个函数吧。1.首先看一下scanf的用法char s;scanf("%s",&s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理。2.getchar的用法int ch;ch = getchar();putch...原创 2018-09-24 16:21:12 · 8779 阅读 · 2 评论 -
C语言指针理解
PHP底层是C语言,在看php源码的时候,遇到了指针,有点迷惑,当初学的比较浅,只是为了过计算机二级,到现在也忘得差不多了,所以现在需要重新温习一下C语言的指针。对于指针,想象成一个模型便于理解,可以想象成一个房间,变量看成房间,变量的值看成房间里住的人,这个变量的地址看成房间的门牌号。举个例子int x;x = 4325;第一行为声明了一个int型的变量,并给它分配了一个内存...原创 2019-01-18 14:14:27 · 207 阅读 · 0 评论 -
指针与数组
数组和指针是区别不开的,数组的表示方法其实就是在变相的使用指针。数组的表示方法为 int arr[10],声明了一个长度为10的int型的数组,数组名是首元素的地址,也就是arr == &arr[0],这两个是相等的,那arr+1是什么呢,这个代表当前的指针地址加一个存储单元,也就是arr[1]的地址。注意一下,一个存储单元不是一个字节,int型占四个字节,在这里一个存储单元等于四个字...原创 2019-01-22 20:24:30 · 170 阅读 · 0 评论 -
C语言字符串中的指针与数组
先说一下字符串字面量(字符串常量):双引号中的字符和编译器自动加入末尾的\0字符,都作为字符串储存在内存中。字符串常量属于静态存储类别,说明如果在函数中使用字符串常量,该字符串只会储存一次,在整个程序的生命周期内存在,即使函数被调用多次。用双引号扣起来的内容被视为指向该字符串储存位置的指针。字符串的赋值可以用指针与数组,请看下面的例子char str1[] = "I am a stude...原创 2019-01-23 15:02:18 · 991 阅读 · 0 评论 -
C语言中数组指针与指针数组的理解
1概念的区分 数组指针:数组的指针,首先说它是一个指针,一个指向数组的指针。指针数组:指针的数组,它是一个数组,数组中存放的内容为指针。 2优先级 优先级为 () > [] > *比如int (*p)[n],因为()的优先级最高,p先于*结合,所以p是一个指针,后面是数组,于是这个就是数组指针。在如int *p[n],[]优先级比*高,p先与[]结合,所以...原创 2019-02-21 18:58:37 · 731 阅读 · 0 评论 -
c语言中typedef的用法
typedef是为现有的类型起一个别名,使使用起来更加的方便,注意一点,它并没有产生新的类型。typedef int BOOL;为int型起了一个新的别名BOOL。例如下边的代码,BOOL为int的别名,然后就可以直接使用了。typedef int BOOL;#define TRUE 1#define FALSE 0BOOL flag = TRUE;在结构体中的用法typ...原创 2019-02-23 11:56:50 · 26351 阅读 · 4 评论 -
C语言中的字节对齐
在看php源码时,分析变量大小时遇到了问题,结构体所占用的大小并不是简单的将里边成员所占大小相加,而是有字节对齐的问题,先看一个小例子:#include <stdio.h>int main(){ struct _s{ char a;//1字节 int b;//4字节 long c;//8字节 void* d;//8字节 int e;//4字节 cha...原创 2019-04-24 16:22:52 · 758 阅读 · 0 评论