C语言——指针 ( 1 )

一.指针的概念

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。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
sscanf函数是C语言中一个非常常用的函数,它可以将一个字符串按照指定的格式转换成相应的数据类型。在嵌入式开发中,sscanf函数也是非常常见的,因为很多时候需要从串口或者其他外部设备中读取数据,并将其转换成相应的数据类型进行处理。下面是一些sscanf函数的使用技巧: 1. 使用sscanf函数时一定要注意格式字符串的正确性。格式字符串中的占位符必须与待转换的数据类型相对应,否则会发生未知错误。 2. 如果待转换的字符串中包含多个数据,可以使用多个占位符进行转换。例如,如果待转换的字符串为"1,2,3",可以使用" %d,%d,%d"的格式字符串进行转换。 3. 可以使用sscanf函数的返回值来判断转换是否成功。如果返回值等于待转换字符串的长度,则说明转换成功,否则转换失败。 4. 如果待转换的字符串中包含浮点数,可以使用"%f"或者"%lf"的格式字符串进行转换。 5. 如果待转换的字符串中包含十六进制数,可以使用"%x"的格式字符串进行转换。 6. 如果待转换的字符串中包含字符或字符串,可以使用"%c"或者"%s"的格式字符串进行转换。 7. 如果待转换的字符串中包含指针类型的数据,可以使用"%p"的格式字符串进行转换。 总之,在使用sscanf函数时一定要注意格式字符串的正确性,否则很容易出现转换错误的情况。同时,还应该注意sscanf函数返回值的判断,以确保转换的正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Franic_wy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值