一、变量和数据类型
1.1基本数据类型
int | 整数类型 | 占用4个字节,可表示-2的31次方到2的31次方减1。 |
float | 单精度浮点型 | 占用4个字节,可表示1.2E-38到3.4E+38的浮点数。 |
double | 双精度浮点型 | 占用8个字节,可表示2.2E-308到1.8E+308的浮点数。 |
char | 字符类型 | 占用1个字节,可表示ASCII字符集中的任意字符。 |
short | 短整型 | 占用2个字节,可表示-2的15次方到2的15次方减1。 |
long | 长整型 | 占用4个或8个字节,可表示比整型更大的整数值。 |
1.2派生数据类型
数组 | 其中所有元素的数据类型都相同,用一对方括号表示。如:int arr[10]。 |
指针 | 可以指向变量或数组中的元素,甚至可以指向函数。使用星号表示这是一个指针类型,如:int *p;。 |
结构体 | 类似于C++中的类,用户可以自定义结构体的名称和成员变量。如:struct student { char name[20]; int age; float score; };。 |
共用体 | 这是一种特殊的数据类型,所有成员共享一个内存位置。如:union data { int x; float y; char z; };。 |
1.3运算符和表达式
1.3.1算术运算符
包括+、-、*、/等,其中/运算符表示整数除法时向下取整。
如:
int a = 13 / 5; //a的值为2。
1.3.2关系运算符
包括>、<、<=、>=、==、!=等,用于比较两个值的大小或是否相等。
如:
int main()
{
int a = 3, b = 4;
if (a > b)
printf("a>b"); //不成立。
}
1.3.3逻辑运算符
包括&&、||、!等,用于组合多个关系表达式。
如:
int main()
{
int a = 3, b = 4;
if (a > 2 && b > 3)
printf("a>2且b>3"); //成立。
}
1.3.4位运算符
位运算符作用于二进制数据上,包括~、&、|、^、<<、>>等。
如:
int main()
{
int a = 9, b = 10;
int c = a & b;
printf("%d", c); //c的值为8。
}
1.3.5赋值运算符
包括=、+=、-=、*=、/=、%=/等,使用这些运算符可以简化赋值操作。
如:
int main()
{
int a = 5; a += 3;
printf("%d", a); //a的值为8。
}
1.4控制语句
1.4.1 if语句
用于根据条件判断执行不同的代码块。
如:
int main()
{
int a = 3;
if (a > 2)
printf("a>2");
}
1.4.2 switch语句
用于多重分支结构,可以优化if-else语句嵌套的代码。
如:
int main()
{
int a = 1;
switch (a)
{
case 1:
printf("a=1");
break;
case 2:
printf("a=2");
break;
default:
printf("a不等于1或2");
break;
}
}
1.4.3 while语句
用于循环执行某些代码,直到条件不再成立为止。
如:
int main()
{
int a = 1;
while (a < 10)
{
printf("%d\n", a);
a++;
}
}
1.4.4 do-while语句
类似于while语句,不同之处在于它先执行一次循环体,然后判断条件是否满足。
如
int main()
{
int a = 1;
do
{
printf("%d\n", a);
a++;
} while (a < 10);
}
1.4.5 for语句
用于循环执行某些代码,通常用于计数器控制的循环。
如:
int main()
{
for (int i = 0; i < 10; i++)
{
printf("%d\n", i);
}
}
1.5函数
1.5.1函数的语法
函数由函数名、参数列表和函数体组成。
如:
int sum(int a, int b)
{
return a + b;
}
1.5.2参数传递
C语言中采用值传递的方式进行参数传递,也可以使用指针或引用改变参数的值。
1.5.3返回值
函数可以有返回值,返回值的类型必须是函数定义时已经确定的类型。
如:
int sum(int a, int b)
{
return a + b;
}
1.6数组和指针
1.6.1数组
数组是一组相同数据类型的元素集合,可以使用方括号访问数组中的元素。
如:
int arr[5] = {1,2,3,4,5};
printf("%d", arr[2]);//输出3。
1.6.2多维数组
C语言中支持二维及以上维数的数组,可以使用嵌套的方括号访问数组元素。
如:
int arr[3][2] = {{1,2},{3,4},{5,6}};
printf("%d", arr[1][1]);//输出4。
1.6.3指针
指针是一个变量,它用于存储一个变量或函数的地址。
如:
int a = 10;
int *p = &a;
printf("%d",*p);//输出10。
1.6.4指针运算
指针可以进行加、减、比较等运算,也可以通过指针访问数组元素。
如:
int arr[5] = {1,2,3,4,5};
int *p = &arr[0];
printf("%d",*(p+2));//输出3。
1.6.5数组指针
数组指针是指向数组的指针,可以通过数组指针访问数组中的元素。
如:
int arr[5] = {1,2,3,4,5};
int (*p)[5] = &arr;
printf("%d", (*p)[2]);//输出3。