结构体定义,初始化和赋值
2017-09-16 15:35
746 查看
文件:funcB.c直接上代码:
#include "stdio.h"
struct NODE{
int value;
struct NODE *nextNode;
struct NODE *preNode;
};
typedef struct NODE sNODE;
sNODE NodeBrightness;
sNODE NodeContrast;
sNODE NodeSharp;
int main()
{
printf("main\n");
NodeContrast = {30,
NULL, NULL};
NodeSharp = {70,
NULL, NULL};
NodeBrightness = {50, &NodeContrast,
NULL};
// NodeBrightness.nextNode = &NodeContrast;
NodeContrast.nextNode = &NodeSharp;
NodeContrast.preNode = &NodeBrightness;
NodeSharp.preNode = &NodeContrast;
// NodeBrightness = {50, &NodeContrast, NULL};
// NodeContrast = {30, &NodeSharp, NodeBrightness};
// NodeBrightness = {70, NULL, NodeContrast};
printf("Brightness = %d\n", NodeBrightness.value);
printf("Contrast = %d\n", NodeContrast.value);
printf("Sharpness = %d\n", NodeSharp.value);
printf("Brightness next value = %d\n", NodeBrightness.nextNode->value);
printf("Contrast next value = %d\n", NodeContrast.nextNode->value);
printf("Sharpness pre value = %d\n", NodeSharp.preNode->value);
return
0;
}
编译:
gcc -o NextNode funcB.c
错误:
funcB.c:21:20: error:
expected expression
NodeContrast = {30, NULL, NULL};
^
funcB.c:22:17: error:
expected expression
NodeSharp = {70, NULL, NULL};
^
funcB.c:23:22: error:
<
baab
/strong>[b]expected expression
NodeBrightness = {50, &NodeContrast, NULL};
^
3 errors generated.
原因:一个结构体对象不能初始化两次,实际上在定义sNODE NodeBrightness;的时候就已经对其初始化为{0, NULL, NULL},再次用语句:
NodeBrightness = {50, &NodeContrast, NULL};
对其初始化为{50, &NodeContrast, NULL}会报错。
但是可以对其单独赋值,比如:
NodeBrightness.value = 50;
NodeBrightness.nextNode = &NodeContrast;
再次编译,没有报错,运行:
./NextNode
main
Brightness = 50
Contrast = 0
Sharpness = 0
Brightness next value = 0
Contrast next value = 0
Sharpness pre value = 0
在这里可以看到,contrast节点和sharpness节点全部为0(默认初始化为0)。
#include "stdio.h"
struct NODE{
int value;
struct NODE *nextNode;
struct NODE *preNode;
};
typedef struct NODE sNODE;
sNODE NodeBrightness;
sNODE NodeContrast;
sNODE NodeSharp;
int main()
{
printf("main\n");
NodeContrast = {30,
NULL, NULL};
NodeSharp = {70,
NULL, NULL};
NodeBrightness = {50, &NodeContrast,
NULL};
// NodeBrightness.nextNode = &NodeContrast;
NodeContrast.nextNode = &NodeSharp;
NodeContrast.preNode = &NodeBrightness;
NodeSharp.preNode = &NodeContrast;
// NodeBrightness = {50, &NodeContrast, NULL};
// NodeContrast = {30, &NodeSharp, NodeBrightness};
// NodeBrightness = {70, NULL, NodeContrast};
printf("Brightness = %d\n", NodeBrightness.value);
printf("Contrast = %d\n", NodeContrast.value);
printf("Sharpness = %d\n", NodeSharp.value);
printf("Brightness next value = %d\n", NodeBrightness.nextNode->value);
printf("Contrast next value = %d\n", NodeContrast.nextNode->value);
printf("Sharpness pre value = %d\n", NodeSharp.preNode->value);
return
0;
}
编译:
gcc -o NextNode funcB.c
错误:
funcB.c:21:20: error:
expected expression
NodeContrast = {30, NULL, NULL};
^
funcB.c:22:17: error:
expected expression
NodeSharp = {70, NULL, NULL};
^
funcB.c:23:22: error:
<
baab
/strong>[b]expected expression
NodeBrightness = {50, &NodeContrast, NULL};
^
3 errors generated.
原因:一个结构体对象不能初始化两次,实际上在定义sNODE NodeBrightness;的时候就已经对其初始化为{0, NULL, NULL},再次用语句:
NodeBrightness = {50, &NodeContrast, NULL};
对其初始化为{50, &NodeContrast, NULL}会报错。
但是可以对其单独赋值,比如:
NodeBrightness.value = 50;
NodeBrightness.nextNode = &NodeContrast;
再次编译,没有报错,运行:
./NextNode
main
Brightness = 50
Contrast = 0
Sharpness = 0
Brightness next value = 0
Contrast next value = 0
Sharpness pre value = 0
在这里可以看到,contrast节点和sharpness节点全部为0(默认初始化为0)。
相关文章推荐
- (C/C++基础)结构体_初始化_赋值_定义_声明
- 2.1详解变量的定义、初始化与赋值
- 声明、定义、初始化、赋值的区别
- bash数组操作-定义/初始化/赋值…
- 结构体定义的时候,变量进行初始化必须在函数里面进行
- C++字符数组(定义和初始化、赋值和引用)
- 结构体总结(结构体定义,赋值,访问)
- STM32外设结构体定义和时钟初始化语句顺序导致编译
- [c++] 初始化结构体 赋值结构体 输出结构体各成员
- C语言结构体数组内带字符数组初始化和赋值
- c语言 结构体 、数组的使用,定义的同时必须初始化,否者它们成员的数值会错乱,不是想象的样子
- c语言中结构体的定义、初始化及内存分配
- C/C++的结构体中的静态变量必须在结构体外定义初始化
- 第一题 定义分数(Fraction)类: 1、成员变量:分子、分母 2、方法: (1)自定义初始化方法(初始分子和分母) (2)分子的赋值、取值方法 (3)分母的赋值取值方法 (4)打印分数信息
- <C语言>结构体的各种定义、初始化、操作代码实例----注释详解
- 浅析C++中结构体的定义、初始化和引用
- OpenCV Mat 只能用静态数组定义时初始化,动态数组赋值给Mat需要逐元素进行. MATLAB,OpenCV,VS混合编程
- C/C++ 之 结构体(1)定义和赋值
- c++里的初始化,申明,定义,赋值
- java数组(定义、赋值和初始化)