一级指针、二级指针与字符串

c语言中没有字符串类型,通过字符数组来模拟字符串,字符串以‘\0’结束。
一、一级指针:
字符数组的定义:
1.指定长度:char buf[100]={‘a’,‘b’}; 或char buf[100]=“ab”;
如果初始化的字符个数大于数组长度,将会出现编译错误。
2.char buf[]={‘a’,‘b’}; 或char buf[]=“ab”;
求长度:strlen(数组名)求的是字符串长度,比如strlen(buf)=2,它只能求字符串的长度。
sizeof(数组名)求的是该数组占内存的大小,sizeof(buf)=100 单位为字节,它还可以求其他类型的长度。
通过数组下标和指针来操作字符串
char *p=buf;
p=buf; (p+1)=buf[1]=(buf+1) 编译器在翻译时会把数组类型翻译成指针的类型。buf是一个常量指针,它指向数组的首地址。
buf和p的区别:buf直接指向数组的首地址,是一块内存块的别名;而指针是保存数组的首地址, 去指向数组。
二、二级指针
第一种:数组的每一个元素都是指针。
char *array[]={“aaa”,“bbb”,“ccc”};它是指针数组,即很多个指针组成的数组。
第二种:char array[10][30]={“aaa”,“bbb”,“ccc”};
第三种:char *p=(char **)malloc(sizeof(char *)*5);
for(int i=0;i<5;i++)
{
p[i]=(char *)malloc(sizeof(char)*100;
}用一个指针指向一个指针数组,这个指针数组指向对应的内存块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值