C语言笔记

char str[]="abc";  长度为3

字符串 "hello csh"

字符串技术标志是一个\0转义字符,是结束标志,不算内容。'\0'值为0。

"A"与'A'不同在于在内存中所占字节数不同,字符串占两个字节(原因是\0算作一个字节),字符一个字节。

/是用来转义字符的。

字符串和字符数组区别:

char str1[]="abc";//这是一个字符串

char str2[]={'a','b','c'};//这是一个字符数组

NULL表示的是空指针,Nul/Null是\0的意思

区别:str1结尾自带一个/0,str1通过printf可以直接编码输出,而str2,无\0,编译器会一直从abc后面找到\0为止,所以出现乱码,此时我们只要在str2[]={'a','b','c','\0'};结果就会输出abc了。

详细请看一下这个博主写的http://t.csdn.cn/8y6Q7

void main() {
	char a[] ="abc\0d";
	char b[] = { 'a','b','c' };
	char c[] = { "abc" };
	printf("%s\n",a);
	printf("%s\n",b);
	printf("%s",c);
}

~按位取反。

int a=10;int b=a++; //后置++,先使用,再++,先把a的值赋给b,a之后自+1

int a=10; int b=++a;//先++,在使用,a+1,再付给b。

max=(a>b?a:b);

a>b为真,则执行a,若为假,否则执行b

typedef unsigned int  u_int; 重命名,将前项命名为u_int

unsigned int a=10 此时等价于 u_int a=10;

static 关键字

1.修饰局部变量,局部变量生命周期变长 (值可以改变) 

2.static修饰全局变量,改变变量作用域,让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就无法使用。(extern 声明外部符号,可以在本源文件用extern关键字引用外部变量使用)。

3.static修饰函数。改变函数作用域-不准确

static修饰函数改变了函数的链接属性

extern int Add(int ,int);使用外部文件的函数,只需写清函数名,参数类型即可

#define

宏的定义   名   内容

例:#define  max 100

例:#define MAX(x,y)  (x>y?x:y);

比大小:

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include<stdio.h>
#define max(x,y) (x>y?x:y)

void main() {
    int a, b;
    scanf("%d%d",&a,&b);
    int z;
    z = max(a, b);
    printf("%d",z);
}

指针:

int a=10;

printf("%p\n",&a);//打印a的地址

int* p=&a;//p存放a的地址,p是指针变量,*p是找到a,并且可以改变a的值。

void main() {
    int a = 10;
    int* p = &a;
    printf("%p\n",&a);


    printf("%p\n",p);
    printf("%d\n", *p);
    *p = 20;
    printf("%d\n",a);
    printf("%d",*p);
}

指针变量大小与电脑位数有关,32位为4个字节,64位为八个字节。

%c是字符,%s是字符串,%p是地址,%d是数字,%f是浮点型(float),%lf是double型,

结构体是一个类型,以;结束s

struct Book {
	char name[20]; short price;
};

void main() {
	Book b1 = { "C语言程序设计", 50 };
	printf("用b1.name,b1.price输出:\n");
	printf("%s\n",b1.name);
	printf("%d\n",b1.price);
	printf("用(&b1)->name,(&b1)->price输出:\n");
	printf("%s\n",(&b1)->name);
	printf("%d\n", (&b1)->price);
	Book* pb = &b1;
	printf("用结构体变量输出:\n");
	printf("%s\n",pb->name);
	printf("%d\n",pb->price);
	printf("%s\n",(*pb).name);
	printf("%d\n",(*pb).price);
	

}

分支语句

else是与最近的if匹配的

void main() {
	int a = 0, b = 2;
	if (1 == a)
		if (2 == b) 
			printf("回家养猪");
		else
			printf("迎娶白富美");
}

void main() {
	int a = 0, b = 2;
	if (1 == a) {
		if (2 == b)
			printf("回家养猪");
	}
		else
			printf("迎娶白富美");
}

switch选择语句

void main() {
	int day=0;
	printf("请在0~3中输入一个整数:\n");
	scanf("%d",&day);

	switch (day) {
	case 1:
		printf("上班一天");
		break;
	case 2:
		printf("上班二天");
		break;
	case 3:
		printf("休息一天");
		break;
	default :
		printf("出错,请按提示输入");
		break;
	}
}

switch还支持嵌套

void main() {
	int num1,num2;
	printf("请在0~2中输入一个整数:\n");
	scanf("%d",&num1);
	switch (num1) {
	case 1:
		printf("去外面吃火锅");
		break;
	case 2:
		printf("自己做饭,买菜\n");
		printf("今天吃点猪头肉,来点红烧鱼杂,来点喝的:请在售卖机投币:\n");
		printf("投一个币请输入1,可以买瓶啤酒;投两个币请输入2,可以买瓶白酒\n");
		printf("投三个币可以买啤酒和白酒各一瓶\n");
		printf("请投币:");
		scanf("%d",&num2);
		switch (num2) {
		case 1:
		printf("获得一瓶雪花,勇闯天涯");
		break;
		case 2:
			printf("获得一瓶白酒,越喝越有");
		break;
		case 3:
			printf("获得白酒下肚,雪花封顶");
			break;
		default :
			printf("欢迎光临,请投币");
			break;
		}
	
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值