以下代码在第二行给出了seg错误:
char *tester = "hello";
char a = (*tester)++; // breaks here
printf("Char is %c\n", a);
Run Code Online (Sandbox Code Playgroud)
以下代码有效:
char *tester = "hello";
a = *tester;
a++;
printf("Char is %c\n", a);
// prints i
Run Code Online (Sandbox Code Playgroud)
为什么不能在一次操作中完成?
我一直在寻找qsort的不同实现,并且在这里找到了一行(https://code.woboq.org/userspace/glibc/stdlib/qsort.c.html),我不明白.它看起来像一个函数指针声明.我很感激任何帮助.我已经根据需要包含了尽可能多的代码(注意到这一行),我想回答这个问题.如果没有,请告诉我,谢谢.
typedef struct
{
char *lo;
char *hi;
} stack_node;
void _quicksort (void *const pbase, size_t total_elems, size_t size, cmp_t cmp, void *arg)
{
char *base_ptr = (char *) pbase;
const size_t max_thresh = 4 * size;
if (total_elems == 0)
return;
if (total_elems > 4)
{
char *lo = base_ptr;
char *hi = &lo[size * (total_elems - 1)];
stack_node stack[(8 * sizeof(size_t))];
stack_node *top = stack;
/* Line below is a function pointer declaration? Initializes struct? */ …Run Code Online (Sandbox Code Playgroud) 我有一个带有整数指针数组的结构.第一个指针的值在对printf的调用之间发生变化.除非我通过函数生成结构,否则不会发生这种情况.代码如下.有人能告诉我发生了什么吗?谢谢.
struct a {
int *nums[10];
};
struct a *makeS();
int main(int argc, char *argv[]){
struct a *_b = (struct a*) malloc(sizeof(struct a));
struct a *_c = makeS();
int i = 1;
_b->nums[0] = &i;
printf("Num is %d\n", *_b->nums[0]); // prints 1
printf("Num is %d\n", *_b->nums[0]); // prints 1
printf("Num is %d\n", *_b->nums[0]); // prints 1
printf("Num is %d\n", *_b->nums[0]); // prints 1 … etc.
printf("Num is %d\n", *_c->nums[0]); // prints 1
printf("Num is %d\n", *_c->nums[0]); // prints 0
printf("Num …Run Code Online (Sandbox Code Playgroud)