c语言的一些高级用法

最近在看《c和指针》,每天会更新一些,如有错误望指正。

char **strings;那**strings就是字符串,*strings是**strings的地址,所以**strings以'\0'结尾,和字符串的结尾一样,而*strings的结尾是内存地址的结尾,是NULL。

char *str="wesda";  str="rfdcx"; 都是合法的。但是,char a[10]="sdad";之后再a="dfad"是错的,虽然a就是数组的首地址。

char **strings1;与char *strings2[];基本一致,但前者更强调可以动态分配管理内存,后者更强调是定长字符串。而且常量字符串只能赋给后者,不能给前者。通常通过后者给前者赋值。strings1[0]=strings2[0];的效果是,把0行的每一列的值都赋给了strings1,前提是两者分配的内存要一样大。

char a[10]="dhksp";char *str=a;那么str[1]就是'h',是可以这样访问指针的值的。
*(*strings)++;如果其对应于{"abc","def","ghi"},那么就可以将其对应于strings[3][3];*strings对应于首3,也就是3行,**strings对应于尾部的3,也就是3列,那么**strings初始对应于strings[0][0];执行*(*strings)++;后,就是strings[0][1](在++将其复制完毕后)也就是'b';

这一部分看的很迷糊,想了半天也没弄清楚,如有什么错误还请大家指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值