基本数据类型
int i = 100;
double d = 100;
float f = 100;
long long l = 100;
short s = 100;
char c = 'C';
printf("int的值:%d\n",i);
printf("double的值:%lf\n",d);
printf("float的值:%f\n",f);
printf("long的值:%ld\n",l);
printf("short的值:%hd\n",s);
printf("char的值:%c\n",c);
打印如下
int的值:100
double的值:100.000000
float的值:100.000000
long的值:100
short的值:100
char的值:C
- 基本数据类型所占字节
printf("int的字节数:%d\n",sizeof(int));
printf("double的字节数:%d\n",sizeof(double));
printf("float的字节数:%d\n",sizeof(float));
printf("long的字节数:%d\n",sizeof(long));
printf("short的字节数:%d\n",sizeof(short));
printf("char的字节数:%d\n",sizeof(char));
打印如下
int的字节数:4
double的字节数:8
float的字节数:4
long的字节数:8
short的字节数:2
char的字节数:1
指针
指针是一个变量,其值为另一个变量的地址。即内存位置的直接地址。像其他变量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:
int *p;
- 分析未初始化的局部指针和全局指针的 x *x的含义
-
局部指针
int *x; printf("x的值:%d\n",x); printf("*x的值:%d\n",*x);
打印如下
x的值:-290633968 *x的值:-290633528
-
全局指针
int *x; printf("x的值:%d\n",x); printf("*x的值:%d\n",*x);
打印如下
x的值:0
对于x就是一个普通的变量
- 对于局部变量,如果没有赋初值,那么默认为随机值
- 对于全局变量和局部静态变量,如果没有初始化值,那么系统默认赋值为0。
*x指针,其值为另一个变量的地址
- 对于局部指针,如果没有初始化,那么分配地址为随机内存地址
- 对于全局指针,如果没有初始化,那么系统不会分配内存地址
小作业
-
写一个方法对两个数的值进行交换
void change(int *p1,int *p2){ int temp = *p1; *p1 = *p2; *p2 = temp; }
-
不开辟多余的内存对两个数的值进行交换
int p1 = 108; int p2 = 666; p1 = p1 + p2; p2 = p1 - p2; p1 = p1 - p2; printf("p1的值:%d\n",p1); printf("p2的值:%d\n",p2);
源码放送
#include <iostream>
using namespace std;
int *h;
//值传递->修改值失败
void change(int i){
i=333;
}
//址传递->修改值成功
void change(int *p){
*p = 333;
}
//写一个方法对两个数的值进行交换
void change(int *p1,int *p2){
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main(int argc, char *argv[]) {
//printf打印函数
printf("hello\n");
//基本数据类型
int i = 100;
double d = 100;
float f = 100;
long long l = 100;
short s = 100;
char c = 'C';
printf("------------------------\n");
printf("int的值:%d\n",i);
printf("double的值:%lf\n",d);
printf("float的值:%f\n",f);
printf("long的值:%ld\n",l);
printf("short的值:%hd\n",s);
printf("char的值:%c\n",c);
printf("------------------------\n");
//变量的地址 %p占位 &取地址
printf("i的地值:%p\n",&i);
printf("------------------------\n");
//sizeof取数据类型的字节数
printf("int的字节数:%d\n",sizeof(int));
printf("double的字节数:%d\n",sizeof(double));
printf("float的字节数:%d\n",sizeof(float));
printf("long的字节数:%d\n",sizeof(long));
printf("short的字节数:%d\n",sizeof(short));
printf("char的字节数:%d\n",sizeof(char));
printf("------------------------\n");
int *p = &i;
*p = 200;
change(i);
printf("值传递int的值:%d\n",i);
change(&i);
printf("址传递int的值:%d\n",i);
int p1 = 108;
int p2 = 666;
change(&p1,&p2);
printf("p1的值:%d\n",p1);
printf("p2的值:%d\n",p2);
//思考a=b什么意思?
int *a = &p1;
int *b = &p2;
printf("a的值:%d\n",a);
printf("b的值:%d\n",b);
a = b;
printf("a = b 后a的值:%d\n",a);
printf("a = b 后b的值:%d\n",b);
//看到打印结果就很明显了这里a,b只是一个变量而已
// 1 对于全局变量和局部静态变量,如果没有初始化值,那么系统默认赋值为0。
// 2 对于局部变量,如果没有赋初值,那么默认为随机值
int *x;
printf("x的值:%d\n",x);
printf("x的值:%d\n",*x);
}
网友评论