这是我的计划:
#include <stdio.h>
#include <stdlib.h>
main(){
char *p1, *p2, *p3, *p4;
p1 = (char*)malloc(10);
p2 = (char*)malloc(10);
p3 = (char*)malloc(16);
p4 = (char*)malloc(32);
printf("p1 points at: %d\n", p1);
printf("p2 points at: %d\n", p2);
printf("p3 points at: %d\n", p3);
printf("p4 points at: %d\n\n", p4);
system("PAUSE");
}
Run Code Online (Sandbox Code Playgroud)
这会在我的电脑上产生以下输出:
p1点数:6492080
p2点数:6492104
p3点数:6492128
p4点数:6492152
因此,无论分配了多少字节,malloc分配的每个内存空间都会进一步开始24个字节.这是为什么?我感谢您的帮助!
我在C中编写了一个程序,它计算用户输入的2个非负整数的Ackermann值.程序检查整数是否为非负数,如果是,则计算它们的Ackermann值,然后请求新的输入或退出.该程序在C中运行良好,我没有问题.这是我的代码:
int ackermann(int m, int n){
if (m == 0) return n + 1;
if (n == 0) return ackermann(m - 1, 1);
return ackermann(m - 1, ackermann(m, n - 1));
}
Run Code Online (Sandbox Code Playgroud)
但事实上,对于大学课程的需要,我们使用C的修改版本(基本相同但具有一些不同的语法规则),它们模拟MIPS汇编语言的语法和规则.更具体地说,我们使用寄存器来操作除数组和结构之外的所有数据.此外,我们不能使用for,while或do-while循环,而是使用if和goto语句.所以我用这种语言编写了以下程序(正如我所说的,它只不过是C语言不同).我的问题是它只适用于(x,0)和(0,y)用户输入(x和y是非负数).它不适用于(4,1),(3,2)和通常所有没有零的输入.据我所知,由于这些计算的大量堆栈,它不能像(10,10)这样非常大的数字有效地工作.但是我想让它适用于像Ackermann(3,1)== 13这样的简单输入.有关Ackermann函数的更多信息,请参阅:http://en.wikipedia.org/wiki/Ackermann_function 这是我的代码:
//Registers --- The basic difference from C is that we use registers to manipulate data
int R0=0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13,R14,R15,R16,R17,R18,R19,R20,R21,
R22,R23,R24,R25,R26,R27,R28,R29,R30,R31;
int ackermann(int m, int n){
R4 = m;
R5 = n;
if(R4 != 0)
goto outer_else;
R6 = …
Run Code Online (Sandbox Code Playgroud) 我想知道以下代码是否可以创建僵尸:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(){
int i=1;
pid_t p;
p = fork();
i++;
if(p!=0){
waitpid(p, NULL, 0);
}
printf("%d\n",i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
因此,父进程调用子进程的waitpid,如果子进程尚未退出,则立即返回.所以,到目前为止,没有僵尸可以出现.但是,如果孩子退出之前
return 0;命令这将是一个僵尸呢?我其实很困惑.在程序终止之前,waitpid应该是最后一行代码吗?任何帮助,将不胜感激.谢谢!
我正在尝试创建一个plpgsql函数来计算存储在另一个表中的id(整数)的某些人的平均年龄(以年为单位).
代码是:
begin
DROP TABLE if EXISTS dates;
DROP TABLE if EXISTS tmp;
DROP TABLE if EXISTS ages;
CREATE TABLE ages (age integer);
--(...) In these lines, I create and fill the table tmp. I did not include this code
--since it's not very much related to my problem. Nevertheless, this table has only
--one integer column
CREATE TABLE dates AS (SELECT "dateofbirth" from person where "idPerson" in (select "bookedforpersonID" from personsofthistype));
UPDATE ages SET (age) = ((SELECT extract (year …
Run Code Online (Sandbox Code Playgroud) 这是一个简单的图形程序,可以在屏幕上添加一些星星.
import acm.graphics.*;
import acm.program.*;
import java.awt.event.*;
import javax.swing.*;
/**
* This program creates a five-pointed star every time the
* user clicks the mouse on the canvas.
*/
public class DrawStarMap1 extends GraphicsProgram {
public void init() {
/* Initializes the mouse listeners */
addMouseListeners();
/* The check box starts out in the "on" position */
fillCheckBox = new JCheckBox("Filled");
fillCheckBox.setSelected(true);
add(fillCheckBox, SOUTH);
/* Clears the screen with a button */
add(new JButton("Clear"), SOUTH);
addActionListeners();
}
/* Called whenever …
Run Code Online (Sandbox Code Playgroud) 所以我想创建一个名为genData.c的文件,例如执行时:./ genData filename.txt会将1个字符写入该文件1000次.
实质上是创建1kb文件.我希望能够修改for循环,比如100000次,生成1MB文件等等.
这是我尝试过的,它编译但是在执行时会导致分段错误.
有什么建议?对不起C是我从未涉足过的语言.
#include <stdio.h>
int main (int argc, char *argv) {
char ch = 'A';
FILE *fp;
fp = fopen(argv[1], "wb");
int i;
for (i = 0; i < 1000; i++) {
fwrite(&ch, sizeof(char), 1, fp);
}
fclose(fp);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我在这里看过很多文章,但在比较的情况下,仍然没有弄清楚函子类相对于简单函数的优势。所以我有一个代码摘录,他们想unsigned char *
通过简单地遍历每个字符并从左到右比较具有优先级的 ASCII 代码来对向量进行排序。
函子是
class Sorter {
private:
unsigned int length;
public:
Sorter( unsigned int _length ): length( _length ) {}
bool operator()( const unsigned char* keyl, const unsigned char* keyr ) { return cmpKey( keyl, keyr, length ); }
};
Run Code Online (Sandbox Code Playgroud)
并且该cmpKey()
功能基本上执行我上面描述的操作。对数据进行排序的调用是
sort( localList.begin(), localList.end(), Sorter( 100 ) );
Run Code Online (Sandbox Code Playgroud)
其中 100 是每个字符串的长度。所以,我读过函子的优点是可以存储调用到调用的阶段,并允许将类用作普通函数。我有两个问题:
在这种情况下,这样做有什么好处?
Sorter
将创建多少个类实例?它是只有 1 还是与 的元素一样多locaList
?