(初学)指针即里面各种定义

一、定义

int/char/double(etc) * p;

二、指向具体对象

1.new(malloc/alloc运算符给指针分配具体空间)

 char * p;
 p = new char[100];
 strcpy(p,"Hello");

2.用&运算符指向某对象

 int a = 5,* p;
 p = & a;

3.将同类型的指针赋给他

 char * p1, * p,a[3] = "abc";
 p1 = a;
 p = p1;

三、指针运算

  1. 和Int相加减 表示指向地址的变化(若指向char p+1则指向数组下一个元素 若指向int p+1则增加一个整形单位长(ps:64or32位是4byte 16位是2byte))
  2. 当指针p1和p2指向同一类型 可以赋值 、进行 = =/</>等关系运算
 p2 = p1;//赋值 使p1 p2指向同一对象 注意指针悬挂问题
 char * p ,* q,s[4] = "abc";
 p = s;
 q = s + strlen(s) - 1;
 while(p < q) swap(p,q);

3.指向同一组成员的指针可以相减(不能相加) 结果为两指针之间相差元素的个数

 char * p2,* p1,s[4] = "abc";
 p2 = s;
 p1 = s +2;
 int t = p1 - p2;//t = 2;

四、指针and数组
1.(数组的指针性)数组的名字就是指向该数组的第一个元素的指针,即第一个元素的地址

int  a[10] ,*p;
p = a;//等价于p = &a[0];
a[i] 等价 *(p + i) 等价 *(a + i)

指针和数组通常可以互换。
2.指针运算比数组运算快 但尽量少用 避免悬挂 以及可读性降低
3.数组是常量 指针是变量 可以改变变量的值 不能改变常量的值也不能取常量的地址 如:
可以写

 p = a;p ++;

不可以写

a ++; a = p;p = &a;

五、Const 指针
1.const定义一个指针指向的数据 则此指针指向的数据为常量 不可改变此数据 但可以让指针指向别的内容 如

const char *p = "zbqzhenshuai";
p = "shuaizhatian";//right,指针指向另一个数据
*p = "youdianshuai";//wrong

2.const定义一个指针 则此指针为常量 不可改变指针本身 可以改变指针指向的数据 且跟定义一般的符号常量那样必须初始化

char *const s = "zbqzhenshuai";
p = "youdianshuai";//wrong
*p = "shuaizha";//right,原来数据中的"zbqzhens"被替换为“shuaizha”

3.const定义指针加指向的数据 都不可改变

const char *const p = "zbqzhenshuai"; 

Over.
ps:啊 终于写完了 迷迷糊糊不知道写了啥 睡了睡了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值