基本数据类型
bool类型
char类型
int类型
short类型
float类型
double类型
long类型
基本类型常量
整形常量
浮点常量
指数常量
字符常量
字符串常量
标识常量
变量基础说明
变量名由字母数字下划线组成
不能以数字开头
不能和关键字重名
地址为变量在内存空间的首地址
大小由数据类型决定
格式:
<存储类型><数据类型><变量名>
存储类型为:auto(默认) register static extern
运算符
算数运算符:+, -, *, /, %, ++, --
关系运算符:<, >, >=, <=, ==, !=
逻辑运算符:&&,||, !
位运算符:&,|,~,^,>>,<<
三目运算符:<表达式1> ? <表达式2> : <表达式3>
逗号运算符:从左到右依次执行,最后的值赋给变量
sizeof运算符:只针对数据类型,不针对变量;sizeof(类型或变量名)
输入输出
输出
putchar( C )
输入
getchar(C)
从键盘输入一个字符
字符串输入函数
gets(S)
gets函数不会以空格作为输入截止的标志
输出完自动换行
循环辅助
break
跳出循环
continue
跳出本次循环
return
在函数中为退出函数,main函数中的return为退出程序
数组
<存储类型><数据类型><数组名>[<表达式>]
数组名表示内存首地址
sizeof数组名是数组占用的总内存
内存字节数 = 数组维数 * sizeof (元素数据类型)
二维数组
顺序存放
内存是一维的
按行序优先
a[3][4]
由3个元素组成(3行),每个元素a[ i ]由包含4个元素(每行4个元素)的一维数组组成
指针与数组
#include <stdio.h>
int main(int argc, char *argv[])
{
int a[3][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int i, j, *p;
printf("enter arr: \n");
for(i = 0; i < 3; i++){
for(j = 0; j < 4; j ++){
scanf("%d", &a[i][j]);
}
}
puts(" ");
printf("每个元素的内容 :\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 4; j ++){
printf("a[%d][%d] = %-5d", i, j, a[i][j]);
}
puts(" ");
}
puts(" ");
printf("每一行每个元素起始地址 :\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 4; j ++){
printf("a[%d][%d] = %p\n", i, j, &a[i][j]);
}
puts(" ");
}
for(i = 0; i < 3; i++){
for(j = 0; j < 4; j++){
printf("a[%d]+1: a[%d][%d] = %p\n", i, i, j, a[i]+j);
}
puts(" ");
}
printf("每一行的起始地址 :\n");
for(i = 0; i < 3; i++){
printf("&a[i]: a[%d][0] = %p\n", i, &a[i]);
}
puts(" ");
for(i = 0; i < 3; i++){
printf("a+1: a[%d][0] = %p\n", i, a+i);
}
puts(" ");
for(i = 0; i < 3; i++){
printf("&a[i]+1: a[%d][0] = %p\n", i, &a[0]+i);
}
puts(" ");
printf("二维数组的起始地址 :\n");
printf("&a: %p\n", &a);
puts(" ");
printf("二维数组内第一个元素的起始地址 :\n");
printf("a: %p\n", a);
puts(" ");
return 0;
}
行指针变量
<存储类型><数据类型>(*<指针变量名>)[表达式];
1 #include <stdio.h>
2
3 int main(int argc, char *argv[])
4 {
5 int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
6 int j = 0, i = 0;
7 int (*p)[4] = a;
8
9 for(i = 0; i < 3; i++){
10 for(j = 0; j < 4; j++){
11
12 printf("%d ", *((*(p+i))+j)); //p+i 为每行的地址(p+i)+ j为一行每一列的地址
13
14 }
15 p = a;
16 puts(" ");
17 }
18 puts(" ");
19 return 0;
20 }