小编Pan*_*ato的帖子

什么是页表条目大小?

我找到了这个例子.

考虑具有32位逻辑地址空间的系统.如果此类系统中的页面大小为4 KB(2 ^ 12),则页表可能包含最多100万个条目(2 ^ 32/2 ^ 12).假设 每个条目由4个字节组成,每个进程可能只需要4 MB的物理地址空间.

每个条目的含义是4个字节,为什么每个进程可能需要最多4 MB的页表空间物理地址空间

paging operating-system

11
推荐指数
2
解决办法
3万
查看次数

为什么表达式a == - if语句中为true?

    #include <stdio.h>

    int main()
    {
        int a = 10;
        if (a == a--)
            printf("TRUE 1\t");
        a = 10;

        if (a == --a)
            printf("TRUE 2\t");
    }
Run Code Online (Sandbox Code Playgroud)

为什么第二个if语句是真的?

输出为:TRUE 1 TRUE 2

这是否由于未定义的行为而发生,因为我将相同的变量与其递减的值进行比较?

c pre-increment post-increment

6
推荐指数
1
解决办法
768
查看次数

我们可以在函数内声明函数吗?

#include <stdio.h>

int main()
{
   void foo();
   printf("1 ");
   foo();
}

void foo()
{
    printf("2 ");
}
Run Code Online (Sandbox Code Playgroud)

输出:

1 2
Run Code Online (Sandbox Code Playgroud)

如何在函数内部声明函数?这是否意味着foo()函数只能由main()调用?

c function

5
推荐指数
1
解决办法
3974
查看次数

我们可以在定义之前调用函数吗?

#include <stdio.h>

void main()

{

    m();

}

void m()

{

    printf("hi");

}
Run Code Online (Sandbox Code Playgroud)

产量

hi

警告

main.c:11:10: warning: conflicting types for 'm' [enabled by default]
     void m()
          ^
main.c:7:9: note: previous implicit declaration of 'm' was here
         m();
         ^
Run Code Online (Sandbox Code Playgroud)

为什么这个程序成功运行,即使m()在定义之前被调用?警告的含义是什么?

c function

5
推荐指数
3
解决办法
3586
查看次数

#运算符在宏中做什么?

#include <stdio.h>

#define foo(x, y) #x #y

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

输出:
kl

我知道##会连接.从输出看来,它似乎#也是连接.我对么?

如果我是正确的那么##运营商和#运营商之间有什么区别?

c macros

5
推荐指数
1
解决办法
187
查看次数

增量运算符如何在if语句中工作?

    #include <stdio.h>

    int main()
    {
        int x = 0;

        if (x++)
            printf("true\n");
        else if (x == 1)
            printf("false\n");
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

输出:

false
Run Code Online (Sandbox Code Playgroud)

为什么输出错误?

x++是后增量; 这意味着使用的值x然后递增.如果是这样,那么x=0应该使用,答案应该是真的.

c if-statement post-increment

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

为什么#define不能用于for循环?

在此程序中,TOTAL_ELEMENTS当不用于for循环时,计算正确.并且第一个printf正确打印.但是,即使循环中的条件为真,第二个printf也无法工作.TOTAL_ELEMENTS回报7.而-1<7-2-1<5是真实的.那么这里有什么问题?

#include<stdio.h>

#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
int array[] = {23,34,12,17,204,99,16};

int main()
{
int d;
printf("Total= %d\n", TOTAL_ELEMENTS);
for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
printf("%d\n",array[d+1]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c-preprocessor

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

C中的void函数返回什么?

#include <stdio.h>

void main()

{

    int k = m();

    printf("%d", k);

}

void m()

{

    printf("hello");

}  
Run Code Online (Sandbox Code Playgroud)

产量
hello5

返回此处的void函数是什么?如果没有printf()则输出为1.这里发生了什么?

c function

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

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

传递2d数组函数时单指针和双指针有什么区别?

我们可以将2d数组作为单个指针传递,也可以传递双指针.但在第二种情况下,输出不如预期.那么第二个代码有什么问题?

方法1:

#include <stdio.h>
void print(int *arr, int m, int n)
{
    int i, j;
    for (i = 0; i < m; i++)
      for (j = 0; j < n; j++)
        printf("%d ", *((arr+i*n) + j));
}

int main()
{
    int arr[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int m = 3, n = 3;
    print((int *)arr, m, n);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

1 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)

方法2:

#include <stdio.h>
void …
Run Code Online (Sandbox Code Playgroud)

c arrays pointers function

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