c编程必知

测试环境:ubuntu 12.1  编译器vim

1、char[] 和 char*

int main(){

    char * str = "asdfghjk";

    char s[5] = {'a', 's', 'd', 'f', 'g'};

    printf("%c\n",*str);

    printf("%s\n", str);

    printf("%p\n“, str);

    printf("%p\n", &str);

    printf("%p\n“, s);

    printf("%p\n", &s);

    for (int i = 0; i < 8 ; i++){

        printf ("%c", *("asdfghjk"+j));

    }

    return 0;

}

输出:

a

asdfghjk

0x8048640

0xbf86ab5c

0xbf86ab67

0xbf86ab67

a s d f g h j k

说明:

1、char × str 定义的是一个字符类型的指针,所以对str进行解引用得到的是 a ,而不是asdfghjk字符串;如果是以模式%s输出的话,将出现警告,甚至导致segment问题

2、str 表示的是当前字符串的首地址,对其进行%s输出,str将得到完整的字符串,它表示的是该字符串,能进行下标操作,但是超出范围容易导致段异常

3、str 表示的是当前字符串的首地址,对其进行%p输出,str将得到该字符串首地址

4、str 表示的是当前字符串的首地址,对其进行%p输出,&str将得到该指针的存储地址

5、s【5】表示的是一个字符数组,而s是该数组的名称,s其值刚好等于该数组的首地址,而非真正表示该数组的首地址

6、s【5】表示的是一个字符数组,而s是该数组的名称,&s是权威用法,但是就其简单,才一般用5所示s取其下标操作,是一个真正的地址类型

7、“asdfghjk"表示的是该字符串的名称,能进行下标操作,越界容易导致段异常问题,也可以写成"asdfghjk”【..】形式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值