相关疑难解决方法(0)

非常基本的C问题

如果我错了,有人可以检查我的理解并纠正我吗?

int p = 5; //create an int holding 5
int *ptr; //create a pointer that can point to an int
*ptr = &p; // not sure - does this mean that my pointer now points to memory address   five, or that the memory address my pointer points at contains 5?
Run Code Online (Sandbox Code Playgroud)

对不起基本的问题 - 我很快就有一个需要使用指针的assignmnet,我真的想在它设置之前破解基础知识.

c pointers

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

使用正则表达式在<p>标记内找到除锚标记之外的所有内容

我在页面上设置了几个HTML块,如:

<p class="something">
    <a href="http://example.com/9999">text 1 2 3</a>
    <a href="http://example.com/2346saasdf">text 3 4 5</a>
    (9999)
    <a href="http://example.com/sad3ws">text 5 6 7random</a>
</p>
Run Code Online (Sandbox Code Playgroud)

我想用它们得到括号中的数字.我不得不承认我以前从未真正使用过正则表达式 - 阅读它,看过它的例子但是我自己没有使用它.无论如何,我创造了这个有点环顾四周:

<p class="something">(.*?)</p>

这正确地得到整个<p>块,但是,我只想要(9999)(括号完整).我真的不确定如何得到它.

假设页面上的其他元素也可能在括号中有数字(但它们不会包含在这种格式中),并且HTML将保持有效且一致,我该如何获取它?

我知道这对于之前使用过正则表达式的人来说可能很容易,但对于解决方案,我会欣赏每个角色捕获的细节,以便我可以从中学习.

javascript regex

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

C中的指针/数组问题

我关注了以下网页:

http://www.1024cores.net/home/lock-free-algorithms/reader-writer-problem/improved-lock-free-seqlock

来源如下:

struct data_t 
{ 
    int seq; // sequence number 
    int data [1024]; // user data 
}; 

struct seqlock_t 
{ 
    data_t* current; 
    data_t pool [16]; // 16 user objects are held 
}; 

seqlock_t sl; 
Run Code Online (Sandbox Code Playgroud)

结构很简单,让我困惑的是:

data_t* d0 = sl.current; // load-consume
int idx = (sl.current - sl.pool + 1) % 16; 
data_t* d = &sl.pool[idx]; 
Run Code Online (Sandbox Code Playgroud)

sl.current是一个指针,sl.pool是什么?当前的池可以实现什么?在c language视图中,我该如何解释这个陈述?

int idx = (sl.current - sl.pool + 1) % 16;
Run Code Online (Sandbox Code Playgroud)

编辑:

感谢所有信息,它帮了很多!!! 在我自己的编码风格中将使用int idx =(sl.current - …

c arrays pointers

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

在 C 中释放指向 malloc 内存的指针的副本

似乎在其他地方找不到我的问题的答案。

考虑代码:

int *ptr = malloc (sizeof (*ptr));

int *dummyPtr = ptr;

free (dummyPtr);

printf ("ptr: %p, dummy: %p\n", ptr, dummyPtr);
Run Code Online (Sandbox Code Playgroud)

据我了解,free()接受一个指针并使其指向NULLaka (nil)。即,指针被取消引用并且指向任何地方。这意味着指针指向的内存被有效擦除。

这个问题分为两个部分:

  1. 如果我运行上面的代码,dummyPtr似乎仍然指向内存中的地址而不是(nil). 为什么?
  2. 会发生什么ptr?它仍然指向该内存块还是也被取消引用?

我已经多次运行此代码和某些变体,但结果相互矛盾。有时只有副本受到影响,有时两者都受到影响。有时指向的值甚至设置为零!

坦白说,我不知道发生了什么事。(我正在运行 Debian,如果这有什么区别的话。)

c malloc free pointers copy

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

这是如何运作的?指向指针赋值的指针

#include <iostream>
using namespace std;
int main() {
    int *p1;
    p1 = new int;
    int *p2;
    p2 = new int;
    p2 = p1;    // what happens here?
    *p1=5;
    cout << "pointer 2 is " << *p2 << endl << *p1 << endl;  // both give out 5
    delete p1;  // what happens to p2 ?
    cout << "pointer 2 is " << *p2 << endl;
    delete p2;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我删除指针对象 p1 时会发生什么?什么是指针 p2 现在引用?有人能解释一下吗?谢谢您的帮助

c++ dynamic-memory-allocation

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

Foo*foo之间的区别; 和Foo foo; 在C++中

我知道指针的基础知识.

我想知道你什么时候使用

Foo *foo; 
Run Code Online (Sandbox Code Playgroud)

代替

Foo foo;
Run Code Online (Sandbox Code Playgroud)

而另一个人则不允许你这样做.

提前致谢

c++ pointers

0
推荐指数
1
解决办法
405
查看次数

在指针中反转数组

这是我的问题:

编写一个反转字符串的函数void reverse(char s []).例如,"Harry"变成"yrraH".

这是我的代码:

void reverse(char s[]);
int main()
{
    char s [] = "Harry";
    reverse(s);
    cout << s << endl;

    system("PAUSE");
    return 0;
}

void reverse(char s[])
{
    int length = strlen(s);
    int c, i ,j;

    for(int i=0, j=length-1 ; i<j ; i++, j--)
    {
        c = s[i];
        s[i] = s[j];
        s[j] = c;
    }
}
Run Code Online (Sandbox Code Playgroud)

它可以完美地扭转字符串.但是,我被要求用指针做.所以根据我的想法,首先我指定ap指针来获取字符串中的第一个char.然后我分配一个指针来获取字符串的最后一个字符串.I循环通过反转阵列.但是当我试图这样做以获得最后一个字符时:

char *q = strlen(s-1);
Run Code Online (Sandbox Code Playgroud)

我收到了一个错误.有人可以帮我用指针解决这个问题吗?

更新部分

if (strlen(s) > 0(
{
char* first = &s[0];
char*last = &s[strlen(s)-1];
while(first < …
Run Code Online (Sandbox Code Playgroud)

c++ pointers for-loop

0
推荐指数
1
解决办法
8039
查看次数

C中的字符串处理 - 指针和按引用调用问题

所以我得到了我的代码以成功将英语转换为猪拉丁语,但是当我将变量传递回main {}时,我只能以某种方式返回地址位置或某个十六进制或字符编号.我试图使用不同的转换说明符和所有内容,但由于某种原因,我无法让它输出字符串.该程序从输入txt文件读取,计算转换,然后打印到输出txt文件.让我知道你认为是什么问题.谢谢!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STR_SIZE 50

char * convertToPigLatin (char * strPtr, char * pLatinStr);

int main(int argc, char *argv[])
{
   char str[MAX_STR_SIZE];
   char pStr[MAX_STR_SIZE];
   char *pStrPtr;
   FILE *fileInPtr;                                     //Create file name
   FILE *fileOutPtr;    

   fileInPtr = fopen("pigLatinIn.txt", "r");    //Assign text to file
   fileOutPtr = fopen("pigLatinOut.txt", "w");

   if(fileInPtr == NULL)                                //Check if file exists
   {
      printf("Failed");
      exit(-1); 
   }
   fprintf(fileOutPtr, "English Word\t\t\t\tPig Latin Word\n", pStr);
   fprintf(fileOutPtr, "---------------\t\t\t\t----------------\n", pStr);

   do                   //Cycles until end of text
   {
      fscanf(fileInPtr, "%29s", …
Run Code Online (Sandbox Code Playgroud)

c string

0
推荐指数
1
解决办法
800
查看次数

引用字符变量时存储指针变量的地址在哪里?

假设我们有一个像这样的字符指针:

static char *example[]={"doctor","who","hello"};
Run Code Online (Sandbox Code Playgroud)

我对这个例子中发生的事情感到有些困惑.

  1. 指针example只是有自己的地址吗?

  2. 我在数组中的字符串每个都有一个不同的内存地址*example
    吗?

  3. 指针是否example只是简单地引用每个地址,并初始化每个地址中的内容,如字符串声明所示?

我只是在使用C几个月,所以我只是想抓住事情的具体细节,我听说指针是C单手最重要的方面.

c pointers

0
推荐指数
1
解决办法
165
查看次数

如何在c ++中使用'&'符号传递参数

我对以下函数的理解是它要求整数变量的地址.

void MyFunction(int & myParameter)
Run Code Online (Sandbox Code Playgroud)

但在我的代码中,我有:

int myVar;
myFunction(&myVar)
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误说:没有已知的从'int*'到'const int&'的转换.

当我没有'&'传递'myVar'时,编译器很高兴.我有点困惑,这里发生了什么.在此上下文中,指针符号'*'和地址符号'&'之间有什么区别?我什么时候应该使用?使用'&'时c和c ++之间是否有区别?提前致谢.

c++

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