注:大多的实例以代码的形式展现
一、字符串
这里就是对c语言中的字符的简单的介绍。
一般来讲,C 语言没有字符串类型,不像int、double等类型,但是 C语言提是存在字符串这个概念的,也就是字符串常量:以 NUL 字节结尾的 0 个或多个字符组成的序列。
具体的形式是用""引起来的字符串来表示字符串常量,例如:"holle world!" 、"mingtianhao\n"。字符串常量可以为空,如""就是一个空的字符串常量,但是即使为空,还是存在一个终止符 NUL 的。(在 C 语言中,常用转义字符 \0 来表示 NUL)
//字符串"abc"相当于"abc\0" \0是字符串的标志
//'a'-->字符
//"abc"-->字符串
#include <stdio.h>
int main ()
{
char arr1[] = "abc"; //"abc" = 'a','b','c','\0';'\0'打印时值为0;也是字符串结束的标志
char arr2[] ={'a','b','c'};
printf("%s\n",arr1);
printf("%s\n",arr2);
return 0;
}
//"%c"-->打印字符
//"%s"-->打印字符串
(一)转义字符
具体的转义字符如下:
转义字符指在ASCII码和Unicode等字符集中的无法被键盘录入的字符、被当作特殊用途而需要转换回它原来的意义的字符。而转义字符的转义是指字符已经被转换了意义。
\132 132所表示的八进制的十进制数是90;而90在ASCII中所代表的是Z;则打印的话就是Z
二、if语句
详细见如下代码:
#include <stdio.h>
int main()
{
int input = 0;
printf("上大学后\n");
printf("你好好学习(1/0)>:");
scanf("%d\n",&input);
if(input == 1){
printf("你可以拿一个好offer");
}else
{
printf("你会家买红薯吧!");
}
return 0;
}
}
三、循环语句
C语言中的常见的有while、do{}while、for等,以while循环为例(其他也一样):
#include <stdio.h>
int main()
{
int line=0;
while(line<1000){
printf("敲一行代码:%d\n",line);
line++;
}
if(line >= 5000){
printf("找到一个好工作!\n");
}else{
printf("没有好工作\n");
}
return 0;
}
while循环适用于不知道循环次数的,for循环适用于已知循环次数的,do{}while就比较适合先循环一次的在去进行条件判断。
四、函数
优势:减少代码的重复量,简化代码
函数:自定义函数,如下面代码中定义的Add()
库函数,系统自带的函数,可以直接调用,需要引用
#include <stdio.h>
int Add(int x,int y){
int z = x + y;
return z;
}
int main()
{
int sum = 0;
int a = 100,b = 50;
sum = Add(a,b);
printf("%d\n",sum);
return 0;
}
五、数组
数组:一组相同类型数据的集合
#include <stdio.h>
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9};;//定义了一个存放10个整数数字的数组
char ch[20];//定义了一个存放20个字符的数组
// printf("%d\n",arr[2]);//按地址访问
int i=0;
while(i <9){
printf("%d\n",arr[i]);
i++;
}
return 0;
}
七、操作符
(一)逗号表达式
(表达式1,表达式2);计算的方法式先计算表达式一的值,最后逗号表达式的结果是表达式二的值;例如:(a=7+8,a+2)的最终的表达式的结果是:17
(二)算数操作符
#include <stdio.h>
int main()
{
int a = 7 / 2;
printf("%d\n",a);//-->结果3
int b = 7 % 2;
printf("%d\n",b);//-->结果1 算数操作符:+ - * / %
return 0;
}
(三)算数操作符
#include <stdio.h>
int main()
{
int a = 1;// 整型1占4字节,也就是32bit 0000000000000000000000000000001
// << --左移
// >> --右移
// 移位操作符移的是二进制位,移完后原数值保持不变
a<<1;
int b = a<<1;
printf("%d\n",b);
printf("%d\n",a);
return 0;
}
(四)位操作符
#include <stdio.h>
int main()
{
int a=2,b=3;//a:010 b:011
int c= a & b;// 与操作:010 -->2
int d= a | b;// 或操作:011 -->3
int e= a ^ b;// 异或操作:001 -->1
printf("按位与:%d ,按位或: %d ,按位异或:%d \n",c,d,e);
return 0;
}
(五)赋值操作符
include <stdio.h>
int main()
{
int a = 10;
a = 20;//=赋值 ==判断相等
//复合赋值符
a = a + 20;//与:a += 20;等价
return 0;
}
(六)单多目操作符
int main()
{
int a = -2;//单目操作符 只有一个操作数 2
int c = a+b;//双目操作符 有两个操作数 a和b
int e= 20;
printf("%d\n",a);//结果是:20
printf("%d\n",!a); //结果是:0 在c语言中:假、非用0表示,20的非就是0,是假的
//sizeof() 计算变量或者类型所占空间的大小,单位是字节
printf("%d\n",sizeof(a));//结果是:4
return 0;
}
#include <stdio.h>
int main()
{
int a = 0;
int b = ~a;// ~对一个数的二进制按位取反
//a=0 占4个字节 32位比特 00000000000000000000000000000000
//b=~a 11111111111111111111111111111111-->为负数,用补码的形式储存 ,而输出的是原码,原码为:补码取反末位加一,则为-1
printf("%d\n",b);
return 0;
}
#include <stdio.h>
int main()
{
int a = 10;
int b =a++;// 后置的加加 先将a=10赋值给b,然后就对b无其他操作,然后a在自增1,此时,b=a=10;a=a++=11
int b =++a;//前置的加加 先对a自增1;再将a=11赋值给b;此时a=11;b=11
printf("%d %d",a,b);
return 0;
}
#include <stdio.h>
int main()
{
int a = (int)3.14;//将double型强制转换为int型
printf("%d",a);//结果为:3
return 0;
}
#include <stdio.h>
int main()
{
int a = 3;
int b = 4;
int e = 0;
//真 -- 非0 例如 a=3 b=4 真在c语言中输出为:1
//假 -- 0 例如 e=0 假在c语言中输出为:0
//逻辑与 && 只要有一个为假则都为假
//逻辑或 || 只要有一个为真则都为真
int c = a&&b;//-->1
int d = a&&e;//-->0
int f = a||b;//-->1
int h = a||e;//-->1
printf("c=%d d=%d f=%d h=%d",c,d,f,h);
//注意区分:& | 这个是位操作符,是按位取反.....
return 0;
}
#include <stdio.h>
//条件操作符(三目操作符)
int main()
{
int a=20;
int b=10;
// exp1 ? exp2 : exp3 表达式exp1如果为真,则整接下来执行exp2表达式,如果为假则执行exp3表达式
int max=(a>b ? a:b);
printf("%d",max);
return 0;
}
(七)static
#include<stdio.h>
int test(){
int a = 1;
a++;
printf("a = %d\n",a);
}
int main()
{
int i = 0;
while(i<5)
{
test();
i++;
}
return 0;
}
//结果是:5个二;如果:static int a=1,则结果是:23456
//static 修饰变量的时候自动初识化为0
//static 修饰局部变量的时候,局部变量的生命周期变长
//static 修饰全局变量的时候,改变了变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就无法在使用了
//static 修饰函数的时候,改变了函数的连接属性,把外部连接属性改成内部连接属性
//注:一般的函数都具有外连接属性,即声明一下,可以引用、使用它
(八)define 定义标识符常量和宏
定义标识符常量
#include <stdio.h>
#define MAX 100
int main()
{
int a = MAX;
printf("%d",a);
return 0;
}
定义宏
#include <stdio.h>
#define MAX(x,y) (x>y?x:y)
int Max(int x,int y){
if(x>y){
return x;
}else{
return y;
}
}
int main()
{
int a = 10;
int b = 20;
int max = Max(a,b);
int max1 = MAX(a,b);
printf("函数:%d\n",max);
printf("定义宏:%d\n",max1);
return 0;
}
八、指针
#include <stdio.h>
int main()
{
int a = 10;//在内存中创建一出空间,名字为:a;地址为:10cie6(假设);空间存放的值:10
int* p = &a;// int* 创建一个整型指针变量(为啥是整型,是应为a为int型),名字为p,用来存放地址;&取地址操作符 &a取出a的地址
*p = 20; // *为解引用操作符;*p通过*对p进行操作,发现存储的为地址,再通过地址找到a,再将20赋值给a
printf("%p\n",p);//1
printf("另一种:%p\n",&a);//与1 相同
printf("%d\n",a);//此时a的值为:20
return 0;
}
#include <stdio.h>
int main()
{
char c = 'aaa';
char* p = &c; //定义char 型指针变量是因为 c定义为char型
*p = 'a';
printf("%c\n",c);
return 0;
}
九、结构体
#include<stdio.h>
struct Book{ //结构体类型
char name[20];
int price;
};
int main(){
struct Book b1 = {"c语言",70};//利用结构体类型创建一个该类型的结构体变量
printf("书本是:%s\n",b1.name);
printf("价格是:%d\n",b1.price);
b1.price = 55;//修改某一属性的值
struct Book *pd = &b1; //结构体类型指针变量
printf("修改后的价格:%d\n",pd -> price);
// .操作符 用于结构体变量中的成员 通常是.成员
// ->操作符 用于结构体指针 通常的用法是:—> 成员
return 0;
}
以上就是C语言初识的第二部分!!!