小编pmg*_*pmg的帖子

在C++中,对传递给调用函数中反映的函数的指针的更改是什么?

如果我将指针P从函数f1传递到函数f2,并修改f2中的P的内容,这些修改会自动反映在f1中吗?

例如,如果我需要删除链表中的第一个节点:

void f2( Node *p)
{
    Node *tmp = p;
    p = p -> next;
    delete tmp;
}
Run Code Online (Sandbox Code Playgroud)

对P的更改是否会反映在调用函数中,还是现在指向已释放的内存空间?

(我在这里的直观答案是否定的,没有反映变化.但是,好的消息来源告诉我上面的代码会起作用.有人可以花时间给出答案并解释它背后的推理吗?另外,如果上面的代码是错误的,我们如何在不使用返回类型的情况下实现这一点?)

c++ pointers parameter-passing

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

从内核模块使用sysfs时出现未知符号错误

嘿,我正在尝试使用sysfs一点点,从用户空间获取一些数据到我的内核模块.这是代码:

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/elf.h>
#include <linux/fs.h>
#include <linux/slab.h>
#include <linux/kobject.h>
#include <linux/sysfs.h>

#define PRINT(x) printk(KERN_INFO x "\n")
#define ERROR(fmt,arg...) printk(KERN_ALERT "Error - " fmt,##arg)



ssize_t mystore (struct kobject *obj,
                    struct attribute *attr, const char *buff, size_t count)
{
 /* doing a little bit */
        return count;
}


ssize_t myshow (struct kobject *obj, struct attribute *attr, char *buff)
{
    return 0;
}

char file_name[] = "myfile";
static struct attribute myattribute = {
    .name = file_name,
    .mode …
Run Code Online (Sandbox Code Playgroud)

c linux kernel module

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

多维数组作为平面数组问题

我正在查看有人编写的两行代码,第二行有一个例外,但我不明白为什么.

char** array = (char**) new char [2] [6];

std_strlprintf(array[0],6,"[%d]", num);
Run Code Online (Sandbox Code Playgroud)

std_strlprintf是一个Brew函数,它将格式化输出写入字符串.(num是一个0的整数值)

为什么这段代码有异常,访问数组的第一个元素为buff [0]有什么问题?


编辑:抱歉我的帖子中有一个错字.现在纠正了.这是具有异常的代码.

c++ brew-framework

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

解析 4 个单字节的 ip 地址字符串

我正在使用 C 在 MCU 上进行编程,我需要将包含 IP 地址的空终止字符串解析为 4 个单字节。我用C++做了一个例子:

#include <iostream>
int main()
{
    char *str = "192.168.0.1\0";
    while (*str != '\0')
    {
            if (*str == '.')
            {
                    *str++;
                    std::cout << std::endl;
            }
            std::cout << *str;
            *str++;
    }
    std::cout << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码在新行中打印每个字节 192、168、0 和 1。现在我需要单个字符中的每个字节,例如字符 byte1、byte2、byte3 和 byte4,其中 byte1 包含 1,byte4 包含 192...或者在结构 IP_ADDR 中,然后返回该结构,但我不知道如何在C。 :(

c parsing pic18 mplab-c18

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

在c中读取unicode文件

我只想在正常的c中读取读取unicode文本文件.以下代码不起作用,

#include<stdio.h>

int main()
{
        FILE *ptr_file;
        char buf[1000];

        ptr_file =fopen("input.txt","r");
        if (!ptr_file)
            return 1;

        while (fgets(buf,1000, ptr_file)!=NULL)
            printf("%s",buf);

    fclose(ptr_file);
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

c unicode file

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

具有别名的可变大小的位域

我有一些结构包含一个位域,其大小可能会有所不同.例:

struct BitfieldSmallBase {
    uint8_t a:2;
    uint8_t b:3;
    ....
}

struct BitfieldLargeBase {
    uint8_t a:4;
    uint8_t b:5;
    ....
}
Run Code Online (Sandbox Code Playgroud)

和一个联合访问所有位一次:

template<typename T>
union Bitfield 
{
    T bits;
    uint8_t all;    // <-------------  Here is the problem

    bool operator & (Bitfield<T> x) const {
        return !!(all & x.all);
    }
    Bitfield<T> operator + (Bitfield<T> x) const {
        Bitfield<T> temp;
        temp.all = all + x.all;   //works, because I can assume no overflow will happen
        return temp;
    }
    ....
}

typedef Bitfield<BitfieldSmallBase> BitfieldSmall; …
Run Code Online (Sandbox Code Playgroud)

c++ bit-fields

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

C*运算符在数组赋值中的含义

这条线是什么意思?几年后我没有做过C.它是否在parens中执行操作然后使int结果成为指针?

b[0] = *(start + pos++);
Run Code Online (Sandbox Code Playgroud)

c arrays pointers variable-assignment

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

C++程序错误

我无法解决3个错误.程序实现是正确的,但不知道如何摆脱3个错误

# include <iostream.h>
# include < conio.h>
void main() {
    class coord {
        float x;
        float y;
        //Constructor
        coord(float init_x,float init_y) {
            x= init_x;
            y= init_y;
        }
        void set(float f1, float f2) {
            x = f1;
            y = f2;
        }
        float get_x() {return x;}
        float get_y() {return y;}
        virtual void plot() {
            cout<<x;
            cout<<y;
        };
        class 3d_coord: public coord {
            float z;
            //constructor
            3d_coord(float init_x,float init_y,float init_z): coord(init_x,init_y) {
                z= init_z;
            }
            void set(float f1,float f2,float f3) {
                coord::set(f1, …
Run Code Online (Sandbox Code Playgroud)

c++

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

如何正确比较两个未签名的字符?

期待比较两个

BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
Run Code Online (Sandbox Code Playgroud)

来自IP_ADAPTER_ADDRESSES结构

其中byte在windows中定义为 typedef unsigned char BYTE;

我需要比较记忆吗?

谢谢!

c c++ windows networking char

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

重载operator << for std :: stack

代码优先:

//.cpp文件

template <typename T>
ostream &operator<<(ostream &os, stack<T> &st)
{
    while(! st.empty()) {
        os << st.top() << " ";
        st.pop();
    }
    return os;
}

template <typename T>
void stack_sorter(stack<T> &st)
{
    cout << st << endl;  //no output, st is empty?
    //...
}

int main()
{
    stack<int> s;
    s.push(4);
    s.push(3);
    s.push(5);
    cout << s << endl;  //ok
    stack_sorter(s);
}
Run Code Online (Sandbox Code Playgroud)

输出:

5 3 4  //this was the output in main, not in stack_sorter
       //empty line, but s is not empty, …
Run Code Online (Sandbox Code Playgroud)

c++ templates

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