C语言入门知识补充

1.数据类型的长度

#include<stdio.h>

int main()
{
	printf("%d\n",sizeof(int));//4 
	printf("%d\n",sizeof(char));//1 
	printf("%d\n",sizeof(float));//4 
	printf("%d\n",sizeof(double));//8 
	printf("%d\n",sizeof(long double));//16 
	printf("%d\n",sizeof(short));//2 
	printf("%d\n",sizeof(long));//4 
	printf("%d\n",sizeof(long long));//8 
	
	return 0;
}

注意:不同编译器可能测试结果不同

2.字符串数组

#include<stdio.h>

int main()
{
	char arr1[]="abc";
	char arr3[]={'a','b','c','\0'};
	printf("%s\n",arr1);
	printf("%s\n",arr3);
	
	return 0;
}

打印结果:abc 

#include<stdio.h>

int main()
{
	char arr2[]={'a','b','c'};
	printf("%s\n",arr2);
	
	return 0;
}

打印结果: abc9?

解释:arr1写法默认有\0结尾,所以可以正常输出,arr3写法有在最后添加\0,所以也可以正常输出,arr2写法却没有输出\0,所以在输出完abc后没有停止输出,最后在abc后输出了些乱码

3.强制规定数据长度

#include<stdio.h>

int main()
{
	int n=0;
	scanf("%2d",&n);
	printf("%4d\n",n);
	printf("%-4d\n",n);
	
	return 0;
}

 

 输入时规定只读入2个长度的数据,后面无论输入多少数据都不理会,输出时规定读取4个长度的数据,我们在前面空两个长度的位置,如果是-4个长度,则是在后面空两个长度的位置

4.char与int的奇妙关系

#include<stdio.h>

int main()
{
	char a='A';
	printf("%c\n",a);
	printf("%d\n",a);
	
	int b=65;
	printf("%d\n",b);
	printf("%c\n",b);
	
	return 0;
}

如果把字符用%c输出,那么就输出原样字符。如果把字符用%d输出,那么就会输出该字符对应的ASCII值(数字,整型)。

反之,如果把数字用%d输出,那么就输出原样数字。如果把数字用%c输出,那么就会输出该数字对应的ASCII值中对应的字符(字符型)。

5.保留小数点后几位

(1)double

#include<stdio.h>

int main()
{
	double n=11111.234;
	printf("%.1lf\n",n);
	printf("%.2lf\n",n);
	printf("%.3lf\n",n);
	printf("%lf\n",n);
	
	return 0;
}

6.关键词static

(1)修饰局部变量

#include<stdio.h>

void test()
{
	int i=0;
	i++;
	printf("%d",i);
}

int main()
{
	int i=0;
	for(i=0;i<5;i++)
	{
		test();
	}
	
	return 0;
}

打印结果:1111 

#include<stdio.h>

void test()
{
	static int i=0;
	i++;
	printf("%d",i);
}

int main()
{
	int i=0;
	for(i=0;i<5;i++)
	{
		test();
	}
	
	return 0;
}

 打印结果:12345

导致以上两种输出差别的是关键字static,static意为“静止的”,表示我们把test()函数内的局部变量i赋予了其静态性(就是直到整个程序结束才会释放),所以每次执行完test()内的操作后,变量i的值会被保存下来,并且仅在这个函数内初始化一次(后面不会再被初始化)。在未赋予其静态性前,这个局部变量i只要一出test()函数就会被释放掉。

(2)修饰全局变量/函数

在实际项目中,一个工程中会有至少一个源文件(xxx.c)。当一个全局变量被static修饰,这个全局变量就只能在本源文件内使用,不能在其他源文件内使用。(函数同理)

7.结构体的访问

#include<stdio.h>

struct Stu
{
	char name[20];//名字 
	int age;//年龄 
	char sex[5];//性别 
	char id[15];//学号 
};

int main()
{
	//打印结构体信息 
	struct Stu s={"张三",20,"男","20180101" };
	//.为结构体成员访问操作符 
	printf("name=%s,age=%d,sex=%s,id=%s\n",s.name,s.age,s.sex,s.id);
	//->操作符 
	struct Stu *ps=&s;
	printf("name=%s,age=%d,sex=%s,id=%s\n",ps->name,ps->age,ps->sex,ps->id);
	return 0;
}

 变量访问结构体用".",指针访问结构体用“->”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值