c问题排坑记
发布日期:2021-07-16 18:25:46 浏览次数:2 分类:技术文章

本文共 1624 字,大约阅读时间需要 5 分钟。

C伴随自己差不多十多年了,一直在弄,一直在忘!呵!问题整理:

  1. 打印芯片的全球唯一码,一组数据为3个字节,丢其中一个字节的0,只打印后面的数???

    解决:在打印时,可以指定打印的数据宽度,如:rt_kprintf(“identify[1]:%08x\t”,identify_number[1]);//指定打印8个位(4个字节)

  2. typedef定义的结构体后面跟变量与大括号跟变量什么区别来?

    解决:这个问题,凭记忆是这样的,struct后面跟名字,代表定义一种新数据类型,和int、double型差不多。使用时,要和struct 名字一起,而struct{}后面跟变量名,表示struct别名,这也是typedef本来的意思,就是为数据类型定义一个别名。
    如下代码:

typedef struct seq_list{
/* data */}seq;//定义变量时,可以是seq myseq;//如果没有typedef的话,定义变量是struct seq_list myseq;也可以是struct seq myseq;这里的seq成了seq_list的别名。//当然常用的就是{}后面跟名字,这样可以定义时可省掉struct.
  1. 指针数组与数组指针是怎么个书写形式来?又记不太清了……

    关键是想了解三个操作符的优先级:() > [] > *。
    例如: char *p1[2];//可以认为先做了一个数组p1[],然后指明数组类型是char *,也就是数组内容是指向char型变量的指针,所以这种形式为:“指针数组。”

    char (*p2)[3];//看到小括号了,所以可以认为是,先构造了一个指针,再看到中括号可以认为是指针指向一个数组,但这个数组是个匿名数组,并且类型为char型

    实测例子,如下:

    #include 
    #include
    int main() {
    // int n; // printf("This is a test file!\r\nInput a number: "); // scanf("%d",&n); // printf("The number is %d",n); // char *p1[4] = {"自", "信", "起", "来"}; // for (int i = 0; i < 4; i++) {
    // printf("%s\n", *(p1 + i)); // // printf("%s\n", p1[i]); // } // char(**p2)[4] = &p1; // for (int i = 0; i < 4; i++) {
    // printf("%s\n", *(p2 + i)); // } int *p3[4] = {
    1, 2, 3, 4}; for (int i = 0; i < 4; i++) {
    printf("%d\n", p3[i]); } for (int i = 0; i < 4; i++) {
    printf("%d\n", *(p3 + i)); } int(**p4)[4] = &p3;//这个就是常规用法,其他用法都会出错,得使用二重指针,才能正确打印出指针数组 //二重指针是因为指针数组本身也是指针,得再取一次指针才是数组的指针。 for (int i = 0; i < 4;i++){
    printf("%d\n", *(p4 + i));// } return 0;}

转载地址:https://blog.csdn.net/guangod/article/details/117718138 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:软件工程复习之软件测试
下一篇:c++复习之类和对象进阶

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月17日 20时31分28秒