我试图理解指针,我不能得到一件事.例如,
//part of code
int *p;
int tab[3];
Run Code Online (Sandbox Code Playgroud)
所以现在我们有变量tab包含数组的第一个元素的地址.我想创建一个指向该指针的指针.所以,我会这样做:
p=&tab;
Run Code Online (Sandbox Code Playgroud)
如果它可以工作,p将是tab(这意味着它会指向tab)的地址不幸的是它不起作用.那么如何获得指针本身的地址呢?地址的正确类型是什么?(addresstype *p)我想指向内存块,它包含第一个元素的地址tab,而不是它tab自身.
这是示例代码:
int nbajt; int buf[];
// we opened file and get descriptor fd
while ((nbajt = read(fd, buf, 5)) > 0) {
if (write(fd2, buf, nlbajt) == -1) {
perror("ERROR");
exit(1);
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白当我们使用 while 循环时它是如何工作的。这个循环会进行多少次?(长度的倍数buf?)。每个循环步骤后是否nbajt只有1或0 + buf文件位置的值会更改 1 个位置?因此,在第一步中,nlbajt = 1我们将 buf 第一个位置 char 写入,然后将其写入fd2?。最后我们有nlbajt==0所以这意味着它是文件的结尾?我将不胜感激检查我是否错了。我主要关心的是 nbajt 值如何变化。这种态度有何不同:
nbajt = read(fd, buf, 5));
write(fd2, buf, sizeof(a));
Run Code Online (Sandbox Code Playgroud) 我试图理解汇编 6502 中的这种寻址模式。
例如我们在程序中有这样的指令:
我们知道“text”标签低于$2000 - 高字节是20,低字节是00,累加器中我们有数字30。现在第一个问题是:当我输入时发生了什么这STA $80.
是否意味着我们存储的整个地址累加器是0080?现在假设我们在 $80 下放置数字 00,在 $81 下放置数字 20。Y 为零。现在为什么当我使用这个时:
sta ($80),y
Run Code Online (Sandbox Code Playgroud)
我得到的地址是2000?这是怎么回事?在0080下我们只有00(字节)而不是整个地址(2字节)2000。我知道($80)意味着我们去$80指向的地址。但我们只存储了 00,而不是整个地址 2000。如果有任何帮助,我将不胜感激。
我试图在单独的文件上制作程序.不幸的是,我在尝试构建代码时遇到了错误.它指向未定义的对constuctors,destructos和函数CzynnikiPierwsze的引用.所以我决定将整个代码放在一个代码中.仍然存在main()函数的问题:未定义引用'CzynnikiPierwsze(int)'任何想法都错了?这是整个代码:
#include <iostream>
#include <cctype>
#include <vector>
using namespace std;
vector<int> CzynnikiPierwsze(int);
class NieprawidlowaDana //wyjatki
{};
class SpozaZakresu
{};
class RozkladLiczby{
private:
int *tab;
public:
RozkladLiczby(int); //konstruktor
vector<int> CzynnikiPierwsze(int); //metoda
~RozkladLiczby();
};
Run Code Online (Sandbox Code Playgroud)
///////////////// CLASS的身体///////////////////////////// ////////
RozkladLiczby::~RozkladLiczby() //destruktor
{}
RozkladLiczby::RozkladLiczby(int n){
int* tab = new int[n+1];
int i,j;
for( i=0;i<=n;i++)
tab[i]=0; //zerujemy tablice
for( i=2;i<=n;i+=2)
tab[i]=2; //zajmujemy sie liczbami parzystymi
for(i=3; i<=n;i+=2)
for(j=i;j<=n;j+=i) //sito erastotesa
if(tab[j]==0)
tab[j]=i;
}
vector<int> RozkladLiczby::CzynnikiPierwsze(int m){
vector<int> tablica;
while(m!=1){
tablica.push_back(tab[m]);
m=m/tab[m];
}
return tablica;
}
////////////////////////END …Run Code Online (Sandbox Code Playgroud) 我想写一个计算器并遇到问题.我已经为所有按钮创建了一个actionlistener,现在我希望能够从键盘输入数据.我是否需要为KeyListener或Keybinding完成整个事情,还是有任何其他方法可以在单击按钮后将其发送到actionlistener中的指令?什么更好:Keylistener或Keybinding
c++ ×2
6502 ×1
addressing ×1
assembly ×1
buffer ×1
c ×1
indexing ×1
java ×1
key-bindings ×1
keylistener ×1
linker ×1
pointers ×1
swing ×1
system ×1