小编Raj*_*nai的帖子

C中的后增量和前增量

可能重复:
任何人都可以解释这些未定义的行为(i = i ++ + ++ i,i = i ++等...)

下面有一个代码,我在理解代码的逻辑时遇到了一个非常严重的问题.

#include <stdio.h>
#include <stdlib.h>

int main(void )
{
int i = 1 ;
printf("\n%d %d %d %d\n",++i,i++,i++,++i) ;
return 0 ;
}
Run Code Online (Sandbox Code Playgroud)

我在linux发行版下使用名为Mandriva的gcc编译器.在上面提到的我在printf语句中使用了一个变量的pre和post增量.我应该得到的输出是2 2 3 5,但我得到一个不同的输出.请帮我这个代码.

我觉得这段代码很难.

c

3
推荐指数
1
解决办法
505
查看次数

Char*共享相同的内存

这是我的代码,我需要澄清此代码的输出:

#include <stdio.h>
int main(void )
{
char name1[10] = "Rajan" , name2[10] = "Rajan" ;
char *name3 = "Chennai" , *name4 = "Chennai" ;
printf("\nAddress for name1 and name2 : %p and %p",name1,name2) ;
printf("\nAddress for name3 and name4 : %p and %p",name3,name4) ;
return 0 ;
}
Run Code Online (Sandbox Code Playgroud)

这段代码的输出是

Address for name1 and name2 : 0x7fff9e6cbe10 and 0x7fff9e6cbe20
Address for name3 and name4 : 0x400760 and 0x400760
Run Code Online (Sandbox Code Playgroud)

这里的值的地址name1name2是不同的,因为我分配了两个不同的阵列.但在的情况下name3name4,地址是相同的,为什么不一样?它不会创建不同的内存并为值分配名称Chennai?为什么它指向相同的内存?

c gcc

3
推荐指数
1
解决办法
138
查看次数

没有IPC的线程之间进行通信

考虑到我有两个线程:THREAD 1和THREAD 2.我只想在它们之间进行通信.THREAD 1包含一个存储在指针中的值,THREAD 2需要在该线程周围访问指针值.

根据我的理解,我认为我们可以直接取消引用从一个线程到另一个线程的指针.但我朋友的建议是我只通过IPC机制访问该值,而不是我的建议.

请对此发表评论.什么是最好的方法,为什么......?

c linux multithreading

3
推荐指数
1
解决办法
223
查看次数

需要一个关于递归函数的解决方案

#include <stdio.h>

void call(int n )
{
    if ( n > 0 )
    {
        call(--n) ;
        printf("\n%d",n) ;
        call(--n) ;
    }
}

int main(void )
{
    int a = 3 ;
    call(a) ;
    return 0 ;
}
Run Code Online (Sandbox Code Playgroud)

在上面提到的代码中,我很难理解它背后的逻辑.我得到0 1 2 0作为输出.为什么?

c gcc

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

标签 统计

c ×4

gcc ×2

linux ×1

multithreading ×1