您的位置:首页 > 其它

学习点滴笔记

2013-03-31 02:06 197 查看
这些天又重新看了看C语言的书,做了点笔记。但是突然之间不知道如何组织这些笔记。最后想了想算了,就这样吧,看书看得杂,欠缺的地方又多了,自然该做笔记的地方就多了,笔记当然是前村不着后店了。

c 语言当中数据的输入输出:

scanf printf函数式针对标准输入输出设备、getchar putchar是针对单个字符进行输入输出的函数。

C 语言但这又四种存储属性: 自动变量,外部变量,静态变量,寄存器变量、这些决定了变量的保留时间和变量的作用范围、

时间角度: 可将变量分为,静态存储和动态存储。

空间角度: 可将变量分为,全局变量和局部变量。局部变量在编译是不分配内存单元,而在运行时调用函数根据需要分配内存单元。

局部变量不声明为static时自动匹配为自动变量。

static全局变量与普通全局变量的区别;

static全局变量与普通全局变量存储方式都是静态存储方式。不同点是非静态全局变量作用整个源程序,当一个源程序由多个源文件组成时,非静态变量子啊各个源文件当中都有效。而static静态全局变量只在定义的该源文件当中有效(即是限制了作用域)。

C语言数据输入输出;

scanf printf,函数是针对标准输入输出设备。

getchar putchar 函数是针单个字符输入输出的函数。

puts : 字符串输出函数。

gets : 字符串输入函数。 gets是也回车作为输入结束的标志,而不是空格。

指针的使用: 当定义了指针之后记得一定要初始化,赋初值、

下面这个程序要避免: strlen() 返回值是无符号整型

///// int main()

/////{

///// char a[] = "abc";

///// char b[] = "abcde";

/////

///// if(strlen(a) - strlen(b) >= 0)

///// {

///// printf("a的长度大于b\n");

///// printf("%d\n",strlen(a) - strlen(b));

///// else

///// {

///// printf("a的长度小于b\n");

///// }

/////编译的时候就会出现如下情况:警告:隐式声明与内建函数‘strlen’不兼容命令未找到。

////////////////////////////////////////////////////////////////////////////////////////////////////

int a,b,c,d;

a=10;

b=a++; > b=10, a=11

c=++a; > c=12, a=12

d=10*a++; > d=10*12, a=13

最后d的值是? (120)

///////////////////////////////////////////////////////////////////

写一个语句实现X是否为2的若干次幂的语句。

X 是2的若干次幂,则有X & (X-1)为假。

scanf(“%d”,i);

printf("%d",( ( i ) & (i-1) ? false : true);

////////////////////////////////////////////////////////////////////////////////

交换两个变量a,b.不使用第三个变量,如a=3,b=5.交换后a=5,b=3/

方法一(注意越界): a=a+b; a=3+5=8

b=a-b; b=8-5=3

a=a-b; a=8-3=5

方法二异或(指定类型如,int,char..)

a=a^b;

b=a^b;

a=a^b;

第二种感觉很棒啊!。

//////////////////////////////////////////////////////////////////////////////////

#include<stdio.h>

int main()

{

int a[5]={1,2,3,4,5};

int *ptr=(int *)(&a+1);

printf("%d,%d",*(a+1),*(ptr-1));

return 0;

}//最后打印的是2 , 5 是不是大大出乎你的意料。

这里&a+1并不是首地址+1的情况,系统会认为加一个a数组的偏移,即是一个数组的偏移量。所以&a+1实际上已经指到了a[5]处。

//////////////////////////////////////////////////////////////////////////////////

将字符串转换为整数

int func(char * s)

{

int ret=0;

int n=1;

if(*s=='-')//这里 一直不知道是啥意思啊

{

n=-1;

s++;

}

while(*s!='\0')

{

ret=ret*10+(*s-'0');

s++;

printf("%d\n",ret);

}

return (n*ret);

/////////////////////////////////////////////////////////////////////////////////

assert(int expression) 是一个调式程序,括号里面的值为false(0),程序报错。

C语言当中没有异或操作:

(a) xor (b)等同于 (a || b)&& !(a&&b);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: