c语言知识点

一:c语言应用范围

在这里插入图片描述
现在主要用于操作系统和嵌入式系统

二:指针

  1. 指针必须指向地址,指针作为参数就要传入地址,所以只要是 指针 就要想到 地址

  2. 地址的改变 ①: 加减即可

	char *a="abcd";
	printf("%c\n",*a);//传入的只是首地址a
	printf("%c\n",*++a);//第二个地址的数b
  1. 指针数组(自己取得名字)
	char *s[2]={"123","222"};
		printf("%c\n",s[0][1]);//输出2
		printf("%s\n",s[1]);//输出222

我的理解
没有指针会报错,因为一个下标的地址只能放一个char,然而加了指针则不会报错,我认为是这相当于是一个指针数组,每个下标都是一个指针

  1. 访问

和数组访问一样可以用下标,访问单个值时只能用%c,%d这些

        char *s="0123" ;
		printf("%c",s[2]);//2

三:关键字

typedef 用于起别名,一般用于结构体,比较简便
typedef 类型名 别名
如:

typedef struct{} 别名
typedef int 别名

四:sizeof

  1. 主函数与其他函数传入参数中的sizeof算出的值不同(数组)
int str[]={1,2,3,4};
printf("%d\n",&str[0]);//6487552
	list=createList(str,length);
LinkList  createList(int data[],int length){
	printf("%d\n",data);//6487552

可以看出只是把头地址传进去了。

  1. 与strlen的区别
    sizeof计算的是整个空间所占用的大小,无论看不看得见
    strlen只是计算字符的长度,用的char*参数,只计算长度不包括’\0’
  2. 使用sizeof计算数组与对应指针大小
char name[10]="goner";
	char* str=name;
	printf("%d,%d",sizeof(str),sizeof(name));//8,10

因为:sizeof判断的是整个的大小,数组留出了10个所以就是10注意:指针的8,这儿的判断指针的大小,并不是判断它指向值得占空间大小,而是判断的是指向这个值的指针大小,32位计算机是4, 64位的则是8

五:格式化输出

符号可用
%s可直接输出a[]与*a定义的字符串
%c可直接输出a[]与*a定义的单个字符
%d输出数字(可输出地址,整数,)
	int  i,j=0;
	char a[]="ssss";
	printf("%c\n",a[2]);//这儿不能用%s会没有输出结果
	printf("%s\n",a);

六: true与false

0 表示false
其他的数字都表示true

七:字符串

一:由 \0结尾

八:*与&

*表示解析地址(及指针)
& 表示输出这个变量等的地址

九: 为什么主函数要用int main()

  1. 为什么不用main():
    因为c90标准勉强接受,但是c99和c11标准不允许;
  2. 为什么不建议用void main():
    因为只用部分编译器允许这样写,如果这样写程序转移就可能出现错误.

十:输入

  1. 向程序中输入值时,都是保存在缓冲区中,以提高效率,然后再又函数从缓存区一个一个的读取(用空格等方式分割的)。

十一: #include

导入的意思

  1. #include<stdio.h>就是把stdio.h文件中的所有内容输入该位置,实际上就是粘贴复制。
  2. #include也是c的预处理指令

十二:语法错误与语义错误

  1. 语法错误:不遵循c语言规则。
  2. 语义错误:意思上的错误,就是程序的编写和自己的目的不同。

十三:printf()

  1. 格式化是否包含#
	int a=100;
	printf("%o\n",a);//144
	printf("%#o",a);//0144

由上可得:加了**#会把八进制,六进制完整的输出**。

十四:对于\0

  1. 它是不会被输出出来的.
  2. 在给数组最后一个字符改为0时,0会直接转变成’\0’
char str[10]={'q','w','e','r'};
	str[3]=0;
	printf("%s",str);//qwe
  1. ‘\0’后面的值都不会输出出来。
	char str[10]={'q','w','e','r'};
	str[2]=0;
	printf("%s",str);//qw

十五:#define

  1. 宏定义,定义常量和函数,后面不加分号
  2. 定义函数时,函数中运算表达式不要加括号,直接把传入的值带入即可。
#include<stdio.h>
#include<string.h>
#define s(x) x*x
int main()
{
	
	printf("%d",s(2+3));//  2+3*2+3=11
	return 0;
 } 

十六:getchar()

一个getchar()会从缓冲区接收一个字符

输入:wdfg
int a=getchar();
int c=getchar();
a=w c=d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值