指针的进阶(未完待续)

1.字符指针

char* p=“abcdef”
此时p指向的是常量字符串,是将字符串首元素的地址存放于该指针中,此时该字符串的内容是不可以通过指针来修改的,故也可以写成这种形式 const char* p=“abcdef”,用const在左边来限定指针,左定值
要想对字符串的内容进行修改,就需要写为另外一种形式
char c[]=“abcdef”;
char
p=&c;
此时p指针中存放的也为c这个字符串首元素的地址,但是可以对字符串进行修改

char str1[]="hello bit";
char str2[]="hello bit";
char* str3="hello bit";
char* str4="hello bit";
if(str1==str2) printf("str1 and str2 are same");
else printf("str1 and str2 are not same");
if(str3=str4) printf(’str3 and str3 are same");
else printf("str3 and str4 are not same");

最终的结果是,str1 and str2 are not same
str3 and str4 are not same
原因是:str3和str4指向的是一个同一个常量字符串,c/c++会把常量字符串 存储到单独的一个内存区域,当几个指针,指向同一个字符串时,他们实际指向同一块内存。但是用相同的常量字符串去初始化不同的数组的时候就会开辟不同的内存块,所以str1和str2不同,str3和str4相同

2.指针数组

可以通过类比得到,字符数组-存放字符的数组 char arr[5]
整形数组-存放整形的数组 int arr[5]
指针数组-存放指针的数组 int* arr[5]

3.数组指针

类比,整形指针-指向整形的指针 int a; int* p=&a;
字符指针-指向字符的指针 char a;char* p=&a;
数组指针-指向数组的指针 int(p)[10];
p先与
结合,说明p是一个指针变量,然后指向的是一个大小为10的整型的数组

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值