C语言
文章平均质量分 52
天长地久007
嵌入式农业仪器开发。
展开
-
C语言中的关键字
auto:自定义存储类型,break跳出循环switch...case多分枝条件语句char定义字符型const 定义常变量continue 结束一次循环,继续下一次循环do...while循环结构double定义双精度数据类型if...else条件结构enun 枚举extern 外部引用。常用语函数中float定义浮点型数据for循环结构goto无条件跳转。破坏程序逻辑原创 2014-07-02 08:19:31 · 599 阅读 · 0 评论 -
C语言 关于结构体的内存对齐
关于结构体的内存对齐内存是以字节为单位编号,但一些硬件平台对某些特定类型的数据只能从某些特定地址开始,比如从偶地址开始。若不按照适合其平台的要求对数据存放进行对齐,会影响到效率。因此,在内存中,各类型的数据是按照一定的规则在内存中存放的,这就是本文要研究的对齐问题。 本文以gcc version 4.4.5,32位x86环境为例,来分析结构体中各成员如何进行对齐。 我们要注意两个方面原创 2014-07-02 08:20:19 · 420 阅读 · 0 评论 -
C语言中数据的强制转换
数据的强制转换分为两种:1.隐性转换 2.显性转换以下为数据类型及其所占字节:数据类型bool:1字节。0,1int :4字节char:1字节float:4字节double:8字节short:2字节long:4字节long long :8字节sizeof();一般用此函数求的数据类型的长度如:sizeof(int)=4;转换原创 2014-07-02 08:19:40 · 816 阅读 · 0 评论 -
extern 修饰变量和 exte…
extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。extern修饰变量 只能修饰未被static修饰的全局变量,表明此变量可供其他文件调用。如:a.c中定义数组a extern inta[8];可在b.c中声明 extern a[8]; 此a数组就可在b.c中用了extern 修饰函数如果函数的原创 2014-07-02 08:21:09 · 499 阅读 · 0 评论 -
static变量与static函数
static全局变量与普通的全局变量有什么区别? 都存放静态存储区。static全局变量在多文件程序中只作用于本文中,并且只初始化一次static局部变量和普通局部变量有什么区别?static局部变量存储于静态存储区,并做初始化直到程序结束时才消亡。普通局部变量在栈中,可以不做初始化,static局部变量只被初始化一次,下一次依据上一次结果值;static函数与普通函数有什么区原创 2014-07-02 08:20:51 · 464 阅读 · 0 评论 -
指针数组与数组指针问题
特别注意:*()可以与[]无条件等价如:*(q)=q[0],*(q+1)=q[1],*(*(q+1)+1)=q[1][1]指针数组int a[2][3] = {};int *pa[5] = {a[0],a[1]};int *q[4];q[0] = a[0];q[1] = a[1];5、行指针与列指针。int a[2][3] = {};int *q[3];q = a;q +原创 2014-07-02 08:19:47 · 383 阅读 · 0 评论 -
printf 与scanf的输入输出修饰
-:左对齐0:前面补0m.n对于实数:m->输出数据的总长度,n->小数点后的位数。对于字符串:m->输出总长度,n->输出字符串前n个字符。%#o :输出八进制,前面加0。%#x: 输出十六进制,前面加0x。*%*md :跳过m个数据,只读取,不赋值。#includeint main(){ int a; char c; scanf("%d",&a); //scan原创 2014-07-02 08:19:44 · 432 阅读 · 0 评论 -
C语言中的移位操作(逻辑移位和算…
算术移位和逻辑移位主要是针对右移而言算数移位是会用符号位作为填充,逻辑移位不填充直接补零 左移时总是移位和补零。右移时无符号数是移位和补零,此时称为逻辑右移;而有符号数大多数情况下是移位和补最左边的位(也就是补最高有效位即符号位),移几位就补几位,此时称为算术右移。例:127的补码:0111 1111(127>>1)右移一位: 0011 1111 ->原码同补码一样 对应原创 2014-07-02 08:19:33 · 2645 阅读 · 0 评论 -
指针函数 函数指…
指针函数:是函数,但是返回值是一个指针。函数指针:是指针,但是指向一个函数的入口地址。函数指针数组:是数组,数组里的元素为指针,而指针指向函数入口地址。【1】#includeint test(int a,int b,int(*pFunc)(int m,int n));int Plus(int a,int b);int Minus(int,int);int main(){ in原创 2014-07-02 08:19:54 · 456 阅读 · 0 评论 -
C语言中if语句的短路原则
【1】int x=1,i=1;if(x>0||++i)。。。。。。。。。。。。。。(++i先加1在运用,i++相反)这个语句先判断x>0成立否?此程序中成立所以if条件为真不在判断后面的句子;所以i的结果依旧为1;【2】int x=1,i=1;if(x此语句执行x原创 2014-07-02 08:19:42 · 3050 阅读 · 0 评论 -
c语言中逗号运算符的作用
在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。假设b=2,c=7,d=5,a1=(++b,c--,d+3);a2=++b,c--,d+3;对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a1=8。对于第二行代码,那么也是有三个表达式,这时的三个表达式为a2=++b原创 2014-07-02 08:19:28 · 11739 阅读 · 4 评论 -
C语言中字符串相关函数
使用有关字符串处理的库函数,务必包含头文件string.h,即#include 1、比较字符串大小函数 1)忽略大小写---strcasecmp函数原型:intstrcasecmp (const char *s1, const char *s2);函数说明:用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异2)忽略大小写—stric原创 2014-07-02 08:20:37 · 598 阅读 · 0 评论 -
函数间参数的传递
1.函数传递(复制数据到另一地址中)void Swap1(int c,int d){ int temp; temp=c; c=d; d=temp;}int main(){ int a=10,b=20; Swap1(a,b); printf("%d %d\n",a,b); Swap2(&a,&b);}结果:10 20在内存中开辟另一端空间存储c d 使c=a;d=b;原创 2014-07-02 08:19:51 · 456 阅读 · 0 评论 -
const指针的特殊性
、const用法int i=10;const int(const) *p = &i ; *p不可变。不可通过访问地址,改变p指向的内容。i = 15;int * const p = &i;p不可变。const int * const p = &i;不可通过访问地址改变地址指向的数据,也不可改变地址。原创 2014-07-02 08:19:49 · 408 阅读 · 0 评论 -
两个整数 X 和 Y&n…
1.采用临时变量temp #include int main() { int x=10,y=20,temp; temp=x; x=y; y=temp; printf("%d,%d\n",x,y);原创 2014-07-02 08:19:35 · 525 阅读 · 0 评论 -
中兴面试题 有关内存的思考题
四、有关内存的思考题(每小题5分,共20分)voidGetMemory(char *p){p =(char *)malloc(100);}voidTest(void){char*str = NULL;GetMemory(str);strcpy(str, "hello world");printf(str);} 段错误:NULL内存不允许操作 请问运行Test函原创 2014-07-02 08:20:56 · 688 阅读 · 0 评论