注:编码工具是CLion+Cygwin64
目录
基本数据类型
字符串:
sizeof:计算数组类型占用字节数
指针:
案例一:打印变量地址
案例二:*运算符,作用是取出内存地址的值
案例三:定义指针变量,指针存放的是内存地址
案例四:通过指针修改值
案例五:通过函数交换两个变量的值(错误示例)
案例六:使用指针通过函数交换两个变量的值
基本数据类型
#include
// 基本数据类型
int main() {
short s = 255;
char c = 'A';
int i = 1;
long l = 13;
float f = 3.0f;
double d = 3.0;
printf("s = %dn", s);
printf("c = %cn", c);
printf("i = %dn", i);
printf("l = %ldn", l);
printf("f = %fn", f);
printf("d = %lfn", d);
return 0;
}
输出:
s = 255 c = A i = 1 l = 13 f = 3.000000 d = 3.000000
字符串:
#include
// 字符串
int main() {
char * str = "C string";
printf("%sn", str);
return 0;
}
输出:
C string
sizeof:计算数据类型占用字节数
#include
// sizeof
int main() {
printf("char sizeof is %dn", sizeof(char));
printf("short sizeof is %dn", sizeof(short));
printf("int sizeof is %dn", sizeof(int));
printf("long sizeof is %dn", sizeof(long));
printf("float sizeof is %dn", sizeof(float));
printf("double sizeof is %dn", sizeof(double));
printf("char* sizeof is %dn", sizeof(char));
return 0;
}
输出:
char sizeof is 1 short sizeof is 2 int sizeof is 4 long sizeof is 8 float sizeof is 4 double sizeof is 8 char* sizeof is 1
指针:
C/C++(对象) 一切皆指针
Java 一切皆对象
Linux 一切皆文件
通俗理解:指针即地址,地址即指针。
案例一:打印变量地址
#include
// 案例一:打印变量地址
int main() {
int num = 108;
// &:取地址符,用于获取变量对应的地址
printf("num addr is %pn", &num);
return 0;
}
输出:
num addr is 0xffffcc3c
案例二:*运算符,作用是取出内存地址的值
#include
// 案例二:*运算符
int main() {
int num = 108;
// &:取地址符,用于获取变量对应的地址
// *:取出内存地址中的值
printf("num addr is %p, value is %dn", &num, *(&num));
return 0;
}
输出:
num addr is 0xffffcc3c, value is 108
案例三:定义指针变量,指针存放的是内存地址
#include
// 案例三:定义指针变量
int main() {
int num = 108;
int *p = #
printf("p value is %p, value in p value is %dn", p, *p);
return 0;
}
输出:
p value is 0xffffcc34, value in p value is 108
案例四:通过指针修改值
#include
// 案例四:通过指针修改值
int main() {
int num = 108;
int *p = #
printf("修改前的值为:%dn", *p);
*p *= 100;
printf("修改后的值为:%dn", *p);
return 0;
}
输出:
修改前的值为:108 修改后的值为:10800
案例五:通过函数交换两个变量的值(错误示例)
注意:
1、 C语言不允许函数重载。
2、 函数声明或实现应该放在函数调用的上方。
#include// 案例五:通过函数交换两个变量的值(错误示例) void swap(); int main() { int a = 1, b = 2; printf(""交换"前,a = %d, b = %dn", a, b); swap(a, b); printf(""交换"后,a = %d, b = %dn", a, b); return 0; } void swap(int a, int b){ int tmp = a; a = b; b = tmp; }
输出:
"交换"前,a = 1, b = 2 "交换"后,a = 1, b = 2
失败原因:swap中a和b的值是main函数中a和b的副本。
案例六:使用指针通过函数交换两个变量的值
#include
// 案例六:使用指针通过函数交换两个变量的值
void swap(int * a, int * b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
int main() {
int a = 1, b = 2;
printf("交换前,a = %d, b = %dn", a, b);
swap(&a, &b);
printf("交换后,a = %d, b = %dn", a, b);
return 0;
}
输出:
交换前,a = 1, b = 2 交换后,a = 2, b = 1



