小编use*_*165的帖子

C 中的 # 和 ## 宏

方案一:

#include <stdio.h>
#define foo(x, y) #x #y

int main()
{
  printf("%s\n", foo(k, l)); //prints kl
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

方案2:

#include <stdio.h>
#define foo(m, n) m ## n

int main()
{
  printf("%s\n", foo(k, l)); //compiler error
}
Run Code Online (Sandbox Code Playgroud)

为什么两个程序的输出会有如此大的差异?这两个程序之间的确切区别是什么?

c macros

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

*p ++和++*p之间的区别

int a = 5;
int *p = &a;
printf("%d\n\n", ++*p);
printf("%d\n", *p++);
Run Code Online (Sandbox Code Playgroud)

++*p相当于++(*p).但是*p++增加指针,而不是p指向的值.但我无法理解为什么我的代码中的printf语句显示相同的值"6".这背后有什么具体的逻辑吗?

c printf pointers

-1
推荐指数
1
解决办法
6836
查看次数

如果在malloc中传递float,double或even char值会发生什么

在详细研究malloc()时,我遇到了这种奇怪的行为.

int *p;
p=(int*)malloc(10.45);
p=(int*)malloc(10.45f);
p=(int*)malloc('j');
Run Code Online (Sandbox Code Playgroud)

程序只使用警告编译任何这些语句并返回有效地址.这里真正的结果是什么?

c malloc

-4
推荐指数
1
解决办法
120
查看次数

标签 统计

c ×3

macros ×1

malloc ×1

pointers ×1

printf ×1