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;
}
}
}