C程序简介
#include <stdio.h>
/**
* <> 寻找系统的资源
* "" 寻找我们自己的资源
* .h .hpp 为头文件
* .c .cpp 为实现文件
*/
int main() {
printf("Hello Wold");
return 0;
}
-
表示要引入一个库,#include <stdio.h>
是C语言的一个标准库。stdio.h
- 为注释,编译时会被编译器忽略。
-
是主函数,程序从这里开始执行。int main()
-
是printf()
提供的一个函数,会打印相应的消息。stdio.h
-
终止 main() 函数,并返回值 0。return 0;
运行结果.png
C语言数据类型
类型 | 字节 | 值范围 |
---|---|---|
char | 1字节 | -128 ~ 127或 0 ~ 255 |
unsigned char | 1字节 | 0 ~ 255 |
signed char | 1字节 | -128 ~ 127 |
int | 2 或 4 字节 | -32,768 ~ 32,767 或 -2147483648 ~ 2147483647 |
unsigned int | 2 或 4 字节 | 0 ~ 65,535 或 0 ~ 4294967295 |
short | 2 字节 | -32768 ~ 32767 |
unsigned short | 2 字节 | 0 ~ 65535 |
long | 4 字节 | -2147483648 ~ 2147483647 |
unsigned long | 4 字节 | 0 ~ 4294967295 |
float | 4 字节 | 1.2E-38 ~ 3.4E+38 |
double | 8 字节 | 2.3E-308 ~ 1.7E+308 |
以64位机器为例,下图为各个类型所占字节数:
C语言数据类型所占字节数-64位机器.png
C语言指针类型
在C语言中,每个变量都会有一个内存地址,而指针就是用来保存内存地址,即指针 = 内存地址
#include <stdio.h>
int main() {
int int_value = 100;
int *p = &int_value;
printf("int_value的内存地址:%p\n", &int_value);
printf("*p指向的内存地址:%p\n", p);
printf("*p指向的内存地址所对应的值:%d", *p);
return 0;
}
-
,这里我们定义了一个 int类型的变量,并为其赋值为 100,其中int int_value = 100
为变量名称,你也可以用其他变量名称,只要符合规范即可。int_value
-
这里我们定义了一个 int类型的指针变量,并将int *p = &int_value
这个变量的内存地址赋值给int_value
,*p
是用来指定一个变量为指针类型。*
&
为取地址符,即获取一个变量的内存地址。
下图是上面代码被编译执行时的结果
image.png
当然,除了int类型的指针,也可以定义其他类型的指针,在C语言中万物皆指针,如下:
#include <stdio.h>
int main() {
/** int 类型的指针 */
int *ip;
/** double 类型的指针 */
double *dp;
/** float 类型的指针 */
float *fp;
/** char 类型的指针 */
char *cp;
return 0;
}
指针的应用
#include <stdio.h>
void swapValue(int *value1, int *value2) {
int tmp = *value1;
*value1 = *value2;
*value2 = tmp;
}
int main() {
int value1 = 100;
int value2 = 200;
printf("--------- before swapValue ---------\n");
printf("value1 = %d\n",value1);
printf("value2 = %d\n",value2);
printf("--------- after swapValue ---------\n");
swapValue(&value1, &value2);
printf("value1 = %d\n",value1);
printf("value2 = %d\n",value2);
return 0;
}
- 首先,我们定义了另外一个函数:
,这个函数接收两个int类型的指针。void swapValue(int *value1, int *value2)
-
表示 将*value1 = *value2
指向内存地址所对应的值取出并赋值给*value2
所指向的内存地址。*value1
- 然后调用
函数来实现值的互换,swapValue
函数接收两个指针类型,而指针 = 内存地址,所以我们分别取出swapValue
和value1
value2
的内存地址传递进去,来实现值的互换。
下图为程序的运行结果:
运行结果.png
系统:Windows 10 64位
IDE:CLion