C语言中的数组和指针有什么区别
数组和指针之间的一个重要区别是数组中元素的地址始终是固定的,不能在执行时修改地址,但对于指针,可以根据需要更改指针的地址。
分支结构
1.简单if语句
C语言中的分支结构语句中的if条件语句。
简单if语句的基本结构如下:
if(表达式)
{
执行代码块;
}
其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。
注意:if()后面没有分号,直接写{}
2.if-else语句
简单的if-else语句的基本结构:
语义是: 如果表达式的值为真,则执行代码块1,否则执行代码块2。
3.多重if-else语句
C语言中多重if-else语句,其结构如下:
语义是:依次判断表达式的值,当出现某个值为真时,则执行对应代码块,否则执行代码块n。
注意:当某一条件为真的时候,则不会向下执行该分支结构的其他语句。
4.嵌套if-else语句
C语言中嵌套if-else语句。嵌套if-else语句的意思,就是在if-else语句中,再写if-else语句。其一般形式为:
C的运算符有以下几种
1、算术运算符(+ - * / %)结合方向自左向右
2、关系运算符(> < =="">= <= !="">
3、逻辑运算符(! && ||)
4、位运算符(<>> ~ | ^ &)
5、赋值运算符(=及符号扩展赋值运算符)
6、条件运算符(? : )
7、逗号运算符( , )
8、指针运算符(* &)
9、求字节运算符(sizeof)
10、强制类型转换运算符((类型))
11、分量运算符( . ->)
12、下标运算符([])
13、其他
下面C语言程序的输出是什么(假设 int 大小为 4 个字节)?
#include<stdio.h>intmain(){int(*arr)[5][4];//Suppose integer size 4 bytesprintf("*arr size %d",sizeof(*arr));return0;}
输出结果为:*arr size 80
解释:
int (*arr)[5][4] 是指向数组的指针。 4*5 的元素总数,如果整数大小为 4 字节,则 *arr 的大小将为 80。
while循环
反复不停的执行某个动作就是江湖人称的循环 。
C语言中有三种循环结构,先看一下C语言while循环的结构
其中表达式表示循环条件,执行代码块为循环体。
while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体代码块。
while语句中的表达式一般是关系表达或逻辑表达式,当表达式的值为假时不执行循环体,反之则循环体一直执行。
一定要记着在循环体中改变循环变量的值,否则会出现死循环(无休止的执行)。
循环体如果包括有一个以上的语句,则必须用{}括起来,组成复合语句。
什么是静态内存分配和动态内存分配
根据 C 标准,有四种存储持续时间,静态、线程 (C11)、自动和分配。存储期限决定了对象的生命周期。
静态内存分配:
静态分配意味着,一个对象具有外部或内部链接或使用静态存储类声明。它仅在程序启动之前初始化一次,其生命周期贯穿程序的整个执行过程。全局和静态变量是静态内存分配的一个示例。
动态内存分配:
在 C 语言中,有很多用于动态分配内存的库函数(malloc、calloc 或 realloc,..)。动态分配内存的问题之一是它不会被编译器本身破坏,这意味着用户有责任解除分配的内存。
当使用内存管理函数分配内存时,它们返回一个指向已分配内存块的指针,返回的指针指向内存块的起始地址。如果没有可用空间,这些函数将返回一个空指针。