栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

记C那些烦人又易混淆的东西~

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记C那些烦人又易混淆的东西~

每次都会在同一个问题上纠结半天,搞懂了又忘,这样不好不好╮(╯﹏╰)╭···
终于想到花点时间把问题记记了,持续更新ing~~~~

1.const char p 与char const p 与char const p
const char p 与char const p一样,意思是字符指针p指向的是字符常量,即不能 p='a'; 这样赋值
char const p意思是指针p是常指针,即指针的地址不能发生改变,不能p=q; 这样改变指针的指向
2.p++、(p)++、(p++)、++p、++(p)、*(++p) ::>_<::
还是用个简单的例子吧

#include 
void main()
{
    int a[]={1,2,3,4,5};
    int *p=a;
    printf("%d,",*p);
    printf("%d,",(*p)++);
    printf("%d,",*p);

    printf("na[0]=%d",a[0]);

    printf("n%d",(*p)--);    //还原a[0]的值
    printf("n%d",*p++);    //结果为1
    printf("n%d",*p);    //结果为2
    printf("n%d",a[0]);    //结果为1,显然与*p++效果不相同,因为'*'和'++'优先级相同,从右到左结合,所以*p++相当于*(p++),所以指针现在指向a[1]
    printf("n%d",*(--p));    //还原指针的位置,但此时先进行自减操作再输出值,同理*(++p),++(*p)亦如此
    printf("n%d,",*(++p));
    printf("%d,",*(p++));
    printf("%d",*p);
    
}   

做个小练习:
p=a; printf("%dn",*(++p)); printf("%dn",*(p)++); printf("%dn",*p--); printf("%dn",--(*p)); printf("%dn",*p);
输出的结果分别是多少呢?
3.string,char string,string[]

 char *string="I love Imooc!";
 printf("%s",string);
 string="I love Imooc too!";
 printf("n%s",string);    //正确
 
 //更正//
 char str[10], *p;
 p=str;
 scanf("%s",p);
 char string[]="I love Imooc!";
 printf("%s",string); //正确

 

 //问题关键在于:数组名表示地址,但数组名是常量,不能像指针一样进行加减偏移操作,也即不能企图通过数组名给数组赋值字符串

② 输入代码
<不断加入新问题·······>

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/233668.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号