学习点滴笔记
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);
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);
相关文章推荐
- spring学习笔记(点滴记录)
- 点滴的学习快乐——CorelDraw 学习笔记 (1)
- 微信小程序学习笔记——CSS点滴记录
- 点滴记录——学习Redis笔记
- Makefile学习笔记2:入门篇-学习点滴之Makefile基础 (zz)
- Effect C++ 学习笔记3
- mysql学习笔记(八):防止sql注入
- Android网络图片加载缓存处理库的使用---第三方库学习笔记(五)
- AngularJS 学习笔记(表单校验篇) 示例
- Linux学习笔记--7.vim查找替换
- Python学习笔记,我的一个PyQt工程,一:Python是什么鬼?
- C++学习笔记46——友元与继承
- 一份关于jvm内存调优及原理的学习笔记
- 【AngularJS】学习笔记
- [金融学习笔记]金融的时间价值
- js学习笔记:DOM——节点层次
- [机器学习] Coursera笔记 - 机器学习应用的建议-Part1
- mongodb学习笔记
- docker-compose version 2学习笔记
- java学习笔记——毕向东视频day06