小编Rac*_*hit的帖子

c中的什么scanf函数返回?

我知道签名是

int scanf(const char *format, ...)
Run Code Online (Sandbox Code Playgroud)

这个int值与什么有关?

c scanf

24
推荐指数
2
解决办法
9万
查看次数

代码在c中给出意外输出

以下代码片段在Turbo C++编译器中提供了意外输出:

     char a[]={'a','b','c'};
     printf("%s",a);
Run Code Online (Sandbox Code Playgroud)

为什么不打印abc?根据我的理解,字符串在C中实现为一维字符数组.
其次,字符串%s%2s?之间的区别是什么?

c

2
推荐指数
1
解决办法
422
查看次数

0
推荐指数
1
解决办法
157
查看次数

数组名称与指向c中第一个元素的指针之间的差异

据我所知,数组名称就像指向第一个元素的指针.但是:

int c[]={0,1,2};
printf("%d \t %d",c,&c[0]); //Different values,Why?
Run Code Online (Sandbox Code Playgroud)

还有为什么*c=0呢?

c

0
推荐指数
1
解决办法
467
查看次数

&符号bug和c的生命周期

众所周知,局部变量具有局部范围和寿命.请考虑以下代码:

      int* abc()
      {
            int m;
            return(&m);
       }
       void main()
       {
             int* p=abc();
             *p=32;
        }
Run Code Online (Sandbox Code Playgroud)

这给了我一个函数返回局部变量地址的警告.我认为这是理由:一旦abc()完成,就会释放本地可验证的m.所以我们在主函数中解除引用无效的内存位置.

但是,请考虑以下代码:

      int* abc()
      {
           int m;
           return(&m);
           int p=9;
       }
       void main()
       {
           int* p=abc();
           *p=32;
       }
Run Code Online (Sandbox Code Playgroud)

我在这里得到同样的警告.但我想m返回时仍会保留其生命周期.怎么了?请解释错误.我的理由是错的吗?

c pointers local-variables compiler-warnings

-4
推荐指数
2
解决办法
255
查看次数

标签 统计

c ×4

arrays ×1

c++ ×1

compiler-warnings ×1

local-variables ×1

pointers ×1

scanf ×1

string ×1