C语言小兵成长记录!

2017.9.16

                                                     一、  第一个C程序。常量及变量

main 入口主函数。EXIT终止程序

printf 格式化输出。

转义字符。/000,/x00

ASC2码 a为97,A为65,‘\0’为0。最大为256,对应char的内存大小。

strlen,求字符串长度

“%dn”,"abc"

sizeof,计算变量大小

sizeof(long),4-32,8-64

数据类型的作用?

1,表示变量的空间。

2,各类型开辟空间的方式不同。

常量分为 字面常量,const常量,define定义的标识符常量,枚举常量。

变量 字母下划线开头,last_name或Lastname

关键字需要注意typedef,volatile,stuct,union,enum.

I\O函数:

int getchar()等待输入字符,获取ASC码值。

scanf(),放入缓冲区,不看目标空间大小,scanf拿\0之前的字符,\0有时getchar拿。

printf(),连接操作系统,也有缓冲区,提高工作效率。

100-200间素数使用试除法,改进,num=101,num+=2,,,if ,i<=sqrt(num).

关键字

register,数据在电脑种由下往上存储顺序为,网盘-硬盘-内存-缓冲区-寄存器。

const,const后是什么形式,形式不能改变,除非改变指针或者改变指针里的值,const int num=1,const int *num=1。

volatile,只要内存发生变化直接从内存中取值。在c++环境下,const int num直接被放入寄存器,此时volatile const int num为了保证内存可见性,将内存赋的新值给予num。

局部变量、全局变量

全局变量:作用域从文件开始到文件结束,生命周期整个工程,加extern可以被其他源文件引用。

局部变量:生命周期为函数括号内,作用域为整个函数,{int a=1;}。

static,修饰局部变量时,static int a可以跑出函数外执行,不被销毁,延迟生命周期,修饰全局变量时,static int a不能被其他源文件引用。 

printf返回字符的个数,当printf嵌套使用时,printf("%d",printf("%d",printf(%d,43))),输出字符的个数,4321.


                                                      二、  分支语句结构介绍

if语句注意点
1.if
   if
全范围,判断2次
   if
   else if
小范围,判断1次
2.else跟最近的if匹配。
3.sizeof(arr1)/sizeof(arr1[0])求数组元素个数。
4.if(flag)判断真假,非0为真,0为假。
5.int*ptr=NULL //初始化指针
   if(ptr!=NULL)
写出指针就要给初始化。
6.浮点数内存存储,float共64位,小数位52位。
    需要声明精度,和0比较时进行精度判断,


switch语句注意点
1.case为入口,break为分支。
2.switch()参数后应该为整形。
   case'a'为ASC码值。

前段时间由于其他事影响导致未能及时更新,现在开始,继续记录!
                                                                 三、  操作符及表达式
1.算术操作符
‘/’计算求浮点数时要求两个操作数最少有一个浮点数。
‘%’只能计算整数。
2.移位操作符
不改变原变量值。
右移分为算术右移,逻辑右移。
在做乘二或除二运算时,可以使用移位,好处:效率高!
3.位操作
按位与,按位或,按位异或
4.赋值操作符
可连续赋值:x=y=a;
复合赋值例如:+=符号;
5.单目操作符
例如: + - sizeof ~(按位取反) ++  *(解引用) 等等
sizeof:
short s=0;
int a=2;
printf("%d',sizeof(s=a+3));//2
printf("%d",s)//0
其中sizeof在编译期间就求值了,而创建变量在运行期间才开辟空间,所以sizeof已经运算完,a+3算出的值无用。上式所以为2.
sizeof(arr)和&arr中,arr表示数组,其他地方都表示数组首元素的首地址.
*:
int *p=&p;//上式的*和int一体,int*代表指针类型.
*p=20;//进行解引用.
6.关系操作符
>=<之类的操作符.
7.逻辑操作符
&&逻辑与,||逻辑或,判断表达式的真假.
例如:
a=0;b=2;c=3;d=4.
a++&&++b&&d++;
printf("%d%d%d%d",a,b,c,d)//1234
a++||++b||d++;
printf("%d%d%d%d",a,b,c,d)//1334

8.条件操作符(三目操作符)
exp1?exp2:exp3
b=a>5?3:-3;

9.逗号表达式
结构为最后一个表达式。
10.1.下标操作符‘[]’,2.函数调用操作符‘()',3.结构体成员访问操作符‘.’结构体指针对象‘箭头’
3.使用结构体成员访问操作符‘.’
typedef struct stu
{
	char name[20];
	int age;
	char sex[7];
}; stu
int main()
{
	stu s;
	strcpy(s.name, "LG");
	s.age = 20;
	strcpy(s.sex, "male");
	system("pause");
使用结构体指针对象‘箭头’
print(&s);
void print(stu *ps)
{
    printf("%d\n",ps→age);
}

                                                四、函数

1.嵌套函数
2.链式访问
定义:把函数的返回值作为某个函数的参数。
#ifndef _ADD_H_
3.链接属性
全局标识符都具有外部链接属性。
外部链接属性:在一个文件定义,可以在另一个文件调用。
一般链接错误为1.外部不存在2.打错函数名。
static void test():改为内部链接属性。
static修饰全局变量:改变链接属性,改变作用域。
          修饰局部变量:改变存储类型,改变生命周期。
          修饰函数:改变链接属性。

栈空间         存放局部变量和形参     出去就销毁。
堆空间         动态内存开辟                 用完不销,易导致内存泄漏。
静态区         全局变量                         生命周期不销毁,直到程序结束。

 
                                                 五、数组

1.数据类型分为内置类型和自定义类型。数组为自定义类型。
2.字符串节省内存,只存一次。
3.数组越界导致无限循环。
int i,arr[10]
for(i=0;i<12;i++)
{
        printf();
        arr[i]=0;
4.二维数组可以省略行,不省略列。
int*p=arr;//一维数组
int*p=&arr[0][0];//二维数组

二维数组输出1-12。
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			arr[i][j] = 4 * i + j + 1;
		}
	}
	int arr[3][4] = { 0 };
	for (i = 0; i < sizeof(arr) / sizeof(arr[0][0]); i++)
	{
		*(p + i) = i + 1;
	}

上式两个循环体等价,第一个从一维角度分析采用下标法,第二个从二维角度分析,采用指针法。
5.二维数组内存中存储。int[][4],二维数组中arr指向数组,数组指针类型:int(*)[4]。
6.数组运算。

                                                               Linux基本操作
ls-              显示当前目录文件
cd文件\     进入该文件
ls-l             首字母为d是目录
                   首字符为_是文件
pwd           路径
cd..            返回上级目录
cd.             当前目录
mkdir        创建文件夹
touch文件        创建文件
gedit文件         编辑该文件
gcc文件            编译该文件
vim文件            编译该文件
./test.o              运行该文件
rm文件             删除该文件

gcc-E test.c-o test.i            预处理       在test.i处停下
gcc-S test.c-o test.s           编译            
gcc-C test.c-o test.o          汇编
gcc-o  mytest  test.0          链接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值