我总是理解在C中,func并且&func是等价的.我假设它们都应该是类型指针,在我的Win64系统上是8个字节.但是,我刚试过这个:
#include <stdio.h>
int func(int x, int y)
{
printf("hello\n");
}
int main()
{
printf("%d, %d\n", sizeof(&func), sizeof(func));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
而期望获得输出8, 8却很惊讶8, 1.
为什么是这样?到底是 什么类型的func?它似乎是类型char或某种等价物.
这里发生了什么?
gcc -std=c99如果它有所作为,我编译了这个.
我在C文件中定义了一个变量:int x我知道extern int x如果我想在其他文件中使用它,我应该用它来在其他文件中声明它.
我的问题是:我应该在其他文件中将其声明在哪里?
在所有功能之外,
// in file a.c:
int x;
// in file b.c:
extern int x;
void foo() { printf("%d\n", x); }
Run Code Online (Sandbox Code Playgroud)在将使用它的功能内?
// in file b.c:
void foo() {
extern int x;
printf("%d\n", x);
}
Run Code Online (Sandbox Code Playgroud)我的怀疑是:
我试图在linux中读取ecryptfs的源代码.任何人都可以帮我解释一下linux内核子系统dm-crypt和ecryptfs的区别.有没有介绍ecryptfs来源的参考书.谢谢你的帮助.
我想在Linux平台的C程序中使用某些操作(如清除屏幕等),我被告知可以完成包括curses.h header-file 在内的操作.但这似乎与gcc包一起不可用.
请告诉我如何安装它?
我有个问题.我使用Visual Studio 2013并获得以下错误:
Error C2371: 'getgrundflaeche' redefinition: different basic types.
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我得到这个错误.当我尝试调用该函数时,我得到与VS12相同的错误getgrundflaeche().
这是代码:
#include <stdio.h>
#define PI 3.14159265359
int main(void){
double h = 0, d = 0, r = 0, G = 0, V = 0, M = 0, O = 0;
printf("Geometrie Zylinder:\nBitte geben sie den Durchmesser d ein (cm): ");
scanf_s("%lf", &d);
printf("Bitte geben sie die Höhe h ein (cm): ");
scanf_s("%lf", &h);
r = d / 2;
G = getgrundflaeche(r);
/*V = get_volumen(r, h);
M = …Run Code Online (Sandbox Code Playgroud) 我已经尝试打印扩展ASCII字符:
http://www.theasciicode.com.ar/
但所有这些符号都在白色背景上打印为问题字符?.
我使用以下周期来打印这些符号:
for (i = 0; i <= 30; i++)
printf("%c", 201);
Run Code Online (Sandbox Code Playgroud)
问题:有没有办法打印这些扩展ASCII字符?或者也许这些角色有特殊的图书馆?
OS Linux Ubuntu 13.04,Code :: Blocks 12.11 IDE.
我不明白这是什么意思:
error: return type is an incomplete type"
Run Code Online (Sandbox Code Playgroud)
我只想返回结构。我已经分离了两个音频通道,我想使用 only 函数使用结构返回它们。
主文件:
#include "functions.h"
...
struct LandR sepChannels_8( unsigned char *, unsigned long, unsigned char *, unsigned char *);
...
int main()
{
...
sepChannels_8( ptrSamples_8, n, ptrSamples_8_L, ptrSamples_8_R );
...
}
Run Code Online (Sandbox Code Playgroud)
函数.h:
...
struct LandR sepChannels_8( unsigned char *smp, unsigned long N, unsigned char *L, unsigned char *R )
{
struct LandR
{
unsigned char *L;
unsigned char *R;
};
struct LandR LRChannels;
int i;
if ( …Run Code Online (Sandbox Code Playgroud) 我想逐行读取文件中的行,但它对我不起作用.
这是我试图做的:
FILE *file;
char *line = NULL;
int len = 0;
char read;
file=fopen(argv[1], "r");
if (file == NULL)
return 1;
while ((read = getline(&line, len, file)) != -1) {
printf("Retrieved line of length %s :\n", &read);
printf("%s", line);
}
if (line)
free(line);
return 0;
Run Code Online (Sandbox Code Playgroud)
有什么建议为什么不起作用?
我试图通过动态分配来构建二维数组.我的问题是,它的第一个维度可能需要100个值,那么第二个维度会根据我的问题采用可变数量的值吗?如果有可能那么我将如何访问它?我怎么知道第二维的边界?
MCGA支持4位颜色深度,即16种颜色.但是当我尝试打印所有这些颜色时,我只得到它们中的前8个,其余8个简单地复制它们,如下图所示.难道我在这里做错了,或者全是因为DOSBox?

代码(MASM,在DOSBox 0.74下):
TITLE PROGRAM193
;----------------------------------------------------------
.MODEL SMALL
.STACK 64
.DATA
;----------------------------------------------------------
.CODE
MAIN PROC FAR
MOV AX, @DATA
MOV DS, AX
MOV AX, 0600h ;AH = 06h (scroll up window)
; black (0)
MOV BH, 0Fh ;0 (black) background, F (white) text
MOV CX, 0000h ;upper line, left column
MOV DX, 004Fh ;finishing line, right column
INT 10h
; blue (1)
MOV BH, 1Fh
MOV CX, 0100h
MOV DX, 014Fh
INT 10h
; green (2)
MOV BH, 2Fh
MOV …Run Code Online (Sandbox Code Playgroud) c ×9
ascii ×1
assembly ×1
bios ×1
character ×1
curses ×1
declaration ×1
dosbox ×1
ecryptfs ×1
extern ×1
file ×1
function ×1
getline ×1
linux-kernel ×1
masm ×1
redefinition ×1
return-type ×1
struct ×1