C语言
牧码人XS
这个作者很懒,什么都没留下…
展开
-
C语言之指针
指针到底是什么?1.指针变量和普通变量的区别首先必须非常明确:指针的实质就是个变量,它跟普通变量没有任何本质区别。指针完整的名字应该叫指针变量,简称为指针。2.为什么需要指针?(1)指针的出现是为了实现间接访问。在汇编中都有间接访问,其实就是CPU的寻址方式中的间接寻址。(2)间接访问(CPU的间接寻址)是CPU设计时决定的,这个决定了汇编语言必须能够实现间转载 2016-11-21 23:26:51 · 837 阅读 · 0 评论 -
exec函数族的作用与讲解
apue看到第八章,对exec函数族的理解一直都很混乱,总觉得不对劲儿,其实不能理解的先暂时跳过,看到后面,再结合实例也就慢慢的理解了。以下内容转自:http://www.cppblog.com/prayer/archive/2009/04/15/80077.html也许有不少读者从本系列文章一推出就开始读,一直到这里还有一个很大的疑惑:既然所有新进程都是由fork产生转载 2017-01-02 20:32:47 · 448 阅读 · 0 评论 -
GetMemory的典型例子
void GetMemory (char **p){ *p = (char *)malloc(100);}void Test (void){ char *str = NULL; GetMemory (&str); strcpy (str,"hello world"); printf (str);} gcc编译会出现段错误 程序首先申请一个char类型的原创 2016-12-30 20:47:27 · 498 阅读 · 0 评论 -
字符串翻转
/**************************************************************************File name: Author:xxx Date: 2016-12-13Description: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变, 句子中单词以空格符隔开。Funcion原创 2016-12-14 00:25:05 · 395 阅读 · 0 评论 -
判断一个数是否为完全平方数
若一个整数a为另一个整数b的平方,则称a为完全平方数,现在输入n个正整数,判断他们中有几个是完全平方数#include#include void main(){int n ;printf("请输入一个数:") ;scanf("%d", &n) ;if(n == (int)sqrt(n)*(int)sqrt(n)){printf("是完全平方数!\n")原创 2016-11-29 23:05:41 · 13964 阅读 · 2 评论 -
递归函数
1.什么是递归函数 递归函数即自调用函数,在函数体内部直接或间接地自己调用自己,即函数的嵌套调用是函数本身。 例如,下面的程序为求n!: long fact(int n) { if(n==1) return 1; return fact(n-1)*n; //出现函数自转载 2016-11-27 23:21:57 · 327 阅读 · 0 评论 -
C语言趣味小程序:打印自身
今天在网上看到了一个C语言趣味小程序:打印自身代码。程序代码如下: char*s="char*s=%c%s%c;main(){printf(s,34,s,34);}";main(){printf(s,34,s,34);} 程序的运行结果如下: char*s="char*s=%c%s%c;main(){printf(s,34,s,34);}";main(){printf(转载 2016-10-29 15:27:29 · 2364 阅读 · 0 评论 -
C语言的基本数据类型与表达式
今天主要讲了C语言的基本数据类型与表达式。最基本的单位是位,字节,字。数据的存储方式包括整数和浮点数,还有c语言的基本数据类型,包括基本类型,构造类型,指针类型(*),还有空类型,以及常量和变量还有运算符与表达式,以及数据的输入与输出。其中基本类型包括逻辑类型,整数类型,浮点类型。(1)逻辑类型 只有两个量true和false,表示逻辑真值和逻辑假值。 为0 时, 为假原创 2016-11-13 22:08:03 · 3184 阅读 · 0 评论 -
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。#include "stdio.h"#include "conio.h"main(){ int i,j,k; printf("\n"); for(i=1;i<5;i++)原创 2016-11-16 00:00:27 · 812 阅读 · 0 评论 -
12个有趣的C语言面试题及答案
1.gets()函数问:请找出下面代码里的问题:#include int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); printf("\n The buffer entered is [%s]\n",buff); return 0;转载 2017-09-19 21:09:49 · 668 阅读 · 0 评论 -
stderr和stdout详细解说
今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣。int fprintf(FILE *stream,char *format,[argument]);在此之前先区分一下:printf,sprintf,fprintf。1,printf就是标准输出,在屏幕上打印出一段字符串来。2,sprintf就是把格式化的数据写入到某个字符串中。返回值字符串的长度。3,f转载 2017-12-19 23:16:40 · 1045 阅读 · 0 评论 -
如何判断电脑CPU大小端
电脑的cpu有两种,大端和小端cpu。大端cpu:所谓的大端,是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;小端:所谓的小端,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合转载 2017-01-03 21:24:30 · 1600 阅读 · 0 评论 -
"\r"、"\n"、“回车键”,三者的关系与区别?
\n是换行,英文是New line,表示使光标到行首\r是回车,英文是Carriage return,表示使光标下移一格\r\n表示回车换行我们在平时使用电脑时,已经习惯了回车和换行一次搞定,敲一个回车键,即是回车,又是换行。 1、\n 软回车:在Windows 中表示换行且回到下一行的最开始位置。相当于Mac OS 里的 \r 的效果。在Lin转载 2017-02-10 15:53:57 · 7821 阅读 · 0 评论 -
#ifdef,#else,#endif,#if用法详解
#ifdef,#else,#endif,#if用法详解预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。关于预处理命令中的文件包含(#i nclude),宏定义(#define),书上已经有了详细的说明,在这里就不详述了。这里主要是对条件编译转载 2017-05-12 15:58:42 · 510 阅读 · 0 评论 -
基础C语音编程时常犯的错误
C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,通过对C的学习,积累了一些C编程时常犯的错误,以供参考。1、书写标识符时,忽略了大小写字母的区别。 main() { int a=5; p转载 2016-11-22 23:55:39 · 448 阅读 · 0 评论 -
C语言谜题
今天看到几个有趣的c语言谜题与大家分享一下,也避免以后犯同样的错误! 1、下面的程序看起来是正常的,使用了一个逗号表达式来做初始化。可惜这段程序是有问题的。你知道为什么呢?#include int main(){ int a = 1,2; printf("a : %d/n",a); return 0;}参考答案:这个程序会得到编译出错(语法出原创 2016-11-16 22:53:11 · 486 阅读 · 1 评论 -
关于C语言中自增和自减运算符的使用及注意事项
++是自增运算符,是单目运算符,其作用是使单个变量的值增1。它有两种使用情况:1)前置:++i,先执行i=i+1,再使用i值;2)后置:i++,先使用i值,再执行i=i+1。例如:j=3; k=++j;执行“k=++j”语句后,k=4,j=4。上述语句等效为:j=3; j=j+1; k=j;再如:j=3; k=j++;执行“k=j++”语句后,k=3,j=4原创 2016-11-18 22:18:34 · 24367 阅读 · 3 评论 -
c语言之顺序,选择,判断结构
今天学习了C语言的三种结构:顺序结构,选择结构,判断结构。1)顺序结构,顾名思义就是按顺序执行的语句。例如:#include void main(){ printf("%s","hello"); printf("%s"," world!\n") return; }这就是顺序结构。2)选择结构就是在执行过程中需要选择和判断。一般有if语句和sw原创 2016-11-20 00:40:02 · 5973 阅读 · 0 评论 -
C语言之数组
1.C语言数组的概念下面是输出一个 4×4 的整数矩阵,代码如下:#include #include int main(){ int a1=20, a2=345, a3=700, a4=22; int b1=56720, b2=9999, b3=20098, b4=2; int c1=233, c2=205, c3=1, c4=6666; int d1=原创 2016-11-20 23:56:45 · 697 阅读 · 0 评论 -
关于全局变量和局部变量
1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2.如何引用一个已经定义过的全局变量?转载 2016-11-24 22:39:26 · 543 阅读 · 0 评论 -
C语言指针的*p++ ,*p(++), (*p)++,*++p的使用
C语言的特点之一是代码可以写的很精炼但对初学者来说不容易理解,因此弄清楚一些写的很难懂的代码段就对我们学习c语言尤为重要了(写在前面) 我们都知道指针可以结合数组使用,下面来区分一下这几个指针表达式转载 2016-11-25 22:36:19 · 11468 阅读 · 4 评论 -
C语言打印图形
打印一个高和上底均为n的空心等腰梯形main( ){ int i;int j;int n;printf("\nPlease Enter n:");scanf("%d",&n);for(i=1;i{ for(j=1;j{if(j==n-i+1 || j>n-i+1 && (i==1||i==n)) {printf("*");}转载 2016-12-15 22:35:07 · 2139 阅读 · 0 评论 -
C语言中常见的内存错误
类型 1:内存未分配成功,却使用了它。方 法:在使用之前检查指针是否为NULL。 1)当指针p是函数的参数时,在函数入口处用语句assert(p!=NULL)进行断言检查。 2)当使用malloc或new来申请内存时,应该用if(p != NULL)进行防错检查。类型 2:引用了尚未初始化的指针原 因:原创 2016-12-22 22:02:15 · 682 阅读 · 0 评论 -
有符号变量与无符号变量的值的转换
#include char getChar (int x,int y){ char c; unsigned int a = x; (a+y > 10) ? (c = 1): (c = 2); return c;} int main (void){ char c1 = getChar(7,4); char c2 = getChar(7,-7); char c3 =原创 2017-07-22 23:55:07 · 1695 阅读 · 0 评论