0
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>

using namespace std;

union type{
            int a;
            char b;
            int *p;
            char *s;
            int arr[10];
};

int fn(union type *exp){

    exp->p = exp->p+1;
    cout << *(exp->p);
    cout << "\n";
return 0;
}

int main(){

    union type *str;
    str->a = 10;
    str->b = 'n';
    str->p = &(str->a);
    cout << (str->p);
    cout << "\n";
    fn(str);
    cout << str->p;
    cout << "\n";
return 0;
}

这段代码给了我分段错误。是因为我需要使用 malloc 显式地为联合分配内存吗?我是编码和尝试学习 C++ 的新手。

4

2 回答 2

3

这段代码给了我分段错误。是因为我需要使用 malloc 显式地为联合分配内存吗?

正确的。您的str指针没有指向有效的内存位置,甚至没有初始化。所以,在写作之前,str->a你需要设置str一些东西。

于 2012-06-26T04:18:05.973 回答
1

您正在声明一个指向联合的指针,但该指针未指向任何有效内存,您需要 malloc/new。它指向的是未定义的(垃圾指针)。

于 2012-06-26T04:18:01.917 回答