C语言学习(三)——指针

指针的定义
int *p   char *p  float *p   

指针定义的含义:* 声明其为指针 前面的类型告诉指针这个地址中存放的是什么类型的值(取出来时应该取多少个自己,或者进行加减运算时应该怎么计算地址)

指针变量所占内存的大小

跟前面定义的类型无关 而跟系统有关
16bits操作系统:2B
32bits操作系统:4B
64bits操作系统:8B

指针指向一个值所在的第一个字节(通常一个地址存放一个字节)

const修饰指针

*左边是修饰指针指向内存的值:如 const int *p int const * p ----- 内存地址可变,但是内存中的值不能被修改

*右边是修饰指针所指向的地址:如 int * const p 内存地址不可变 但是内存中的值可变

指针指向一个字符串时:如 char * p = “AAAAAA\n” 等价于 const char * p = “AAAAAA\n”
p是指向该字符串的首地址,这种字符串在初始化时是为const类型 要跟char数组初始化时区别开来

volatile和typedef

volatile :防止优化 确保本条指令不会因编译器的优化而省略,且要求每次直接读值

volatile int a[2]; a[0]=1; a[0]=2; a[0]=3; 编译器会优化为只生成 a[0]=3 这条语句的机器代码

typedef:重定义符

char * type; ----type为char类型的指针变量 指向一段char类型的内存
typedef char * type; ----type为char类型指针的别名

指针的加减操作

指针的加减等同于:type p p+n(宏观)= p+nsizeof(type)(微观)

C语言在定义同个类型的多个变量时 其地址是连续的

如:int a=0x12345678,b=0x999999998;
int *p=&b;
p+1==a; //小端模式 低字节放在低地址

指针的逻辑运算(大部分用到 == 和 !=)

0x0是一个无效地址,即NULL 用NULL判断一个指针是够无效

多级指针
如:char **p ----指针中存放指针的地址
标准main函数写法
int main(int argc,char **argv) —argc参数的个数 argv存放参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值