一.指针的概念
1.概念:指针就是变量的地址。? ?(&是取地址符,这是指针)
int main()
{
int a = 4;
printf("%d\n", a); //输出变量a的内容
printf("%x\n", &a); //输出变量a的地址
return0;
}
2.变量的访问方式:
? ?(1)直接访问:之前的访问都采用了直接访问的方式。在定义变量、编译时,系统会给变量随机分配相应的储存空间,同时也会产生一个变量和内存地址。
? ? (2)间接访问:在整形变量、字符型等变量中储存的是数值或字符。在C语言中还有一种定义变量的方式,那就是根据变量储存的地址,若定义了变量整型变量p,通过赋值运算符将变量a的地址赋给他(p = &a)。通过变量p访问变量a,需要先通过变量与内存关系得到a的地址,再通过这个地址访问变量a,这种方式就是间接访问。
3.指针和地址:在C语言中,把地址称为指针。如果变量中保存的是其他变量的地址,这种变量称为指针变量,可以把指针变量的变量简称指针。
二.指针变量
1.指针变量的定义:??类型说明符 * 指针变量名? ? ??(类型说明符指定指针的变量类型,可以是整型、实型、字符型、数组、结构体等数据类型。指针变量名表示变量称,必须是合法标识符。)
例如:
1.定义时初始化:
int a;
int *p = &a;
2.先定义后赋值:
int x, *p;
p = &x;
拓展:
?
类型说明符
一般用于修饰int
第一类:说明长度的
-
short short占用2个字节(16bit),取值范围是-2^15 ~ 2^15-1 -
long 在64位编译器上,long占用8个字节(64bit),取值范围是-2^63 ~ 2^63-1 在32位编译器上,long占用4个字节(32bit),取值范围是-2^31 ~ 2^31-1 -
long long long long占用8个字节(64bit),取值范围是-2^63 ~ 2^63-1 -
注意点: 1.企业开发一般不用long,用long long 2.数据类型超出了对应的取值范围,就会导致存储的数据不对 3.short的长度不能大于int,int的长度不能大于long 4.char一定为为8位(1字节),毕竟char是我们编程能用的最小数据类型 5.C语言不看怎么存储,看怎么读取,short -----> %hi,long -----> %li, long long -----> %lli
第二类:说明符号的
-
signed signed int等价于signed,unsigned int等价于unsigned signed和unsigned的区别就是它们的最高位是否要当做符号位,并不会像short和long那样改变数据的长度,即所占的字节数 -
unsigned 表示无符号,也就是说最高位并不当做符号位,所以不包括负数。 unsigned的取值范围是:0 ~ 2^32 - 1 -
注意: 如果想输出unsigned定义的一个正数,占位符用%u unsigned应用场景:银行存款的记录(提高阅读性),学生成绩等
合法标识符
C语言标识符是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义,标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”组成,并且首字符不能是数字,但可以是字母或者下划线。例如,正确的标识符:abc,a1,prog_to。
|