C语言初识(二)

注:大多的实例以代码的形式展现

一、字符串

这里就是对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语言初识的第二部分!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值