c语言中关于声明和左值右值问题
来源:互联网 发布:java dao设计模式 编辑:程序博客网 时间:2024/06/05 23:00
float *f() 中,()的优先级高于* 所以真正的理解意义为 float *(f());即返回值为双精度型的指针变量 引入typedef 与 signal 举个例子:
void (*signal(int, void(*)(int)))(int);
简化为:
typedef void (*HANDLER)(int);HANDLER signal (int , HANDLER);
上述是关于函数声明的问题,那么对于变量也存在生命的问题。要理解变量声明,初始化和赋值的问题。
int a = 0; int b; b=10;
对于第一个来说这就是一个初始化,在内存中创建空间来保存a这个变量,并将a的值初始化为0,防止一个随机值。对于第二个来说就是一个声明,声明一个整形变量b。第三个就是一个赋值语句,将10这个至赋给变量b,这时候b当作左值来用,代表的是b变量的地址,也就是将10这个值放到b所对应的地址中去。 那现在来说一说左值和右值到底意义是什么。 1>左值可以理解为“=”左边的变量或者常量,对于变量来说,当左值来用的话,代表的是变量在内存中的地址,也就是址属性。 2>右值可以理解为“=”右边的常量或者变量,对于常量来说就是他自身,对于变量来说就是变量中所存储的内容,也就是值属性 比如写一个简单的交换函数
void swap(int *a,int *b) { int temp = *a; *a = *b; *b = temp; }
对于这个变量来说,首先创建了一个临时变量temp,并将*a的内容初始化给temp,那么temp中保存的就是*a的内容,也就是a变量的地址,这时候*a就作为一个右值。第二步,*a = *b;根据上面所说的,*a这里就当作一个左值来使用,也就是*a的地址来保存*b的值,第三步也是同样的道理,最终交换的是a和b的地址,从而改变a和b的值。
0 0
- c语言中关于声明和左值右值问题
- C语言中定义和声明
- C语言中变量声明和定义
- C语言中声明和定义详解
- C语言中变量声明和定义
- C语言学习_C Primer Plus:关于声明变量和printf的先后问题
- C语言中关于.h和.c的问题
- 关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题
- 关于C语言中extern声明外部…
- 关于C语言中a++和++a的问题
- 关于C语言中“x++”和“++x”的问题
- c中关于指针的声明和定义的一些问题
- c中关于指针的声明和定义的一些问题
- C和C++语言中字符串的声明
- C和C++语言中字符串的声明
- C语言函数声明问题。
- 一个C语言函数声明和定义的编译问题
- 有趣的C语言--函数声明和形参问题
- iOS与Unity交互
- Matlab的特殊符号——legend()方法和text()方法的插入及特殊字符
- 加解密之Base64实现
- style中position div定位和嵌套问题
- excel导出,导入
- c语言中关于声明和左值右值问题
- Android组件化和插件化开发
- java并发编程——Condition
- android配置时间服务器+亚洲主要的授时服务器
- 利用WPF MediaElement去播放视频或者音乐
- 简单的js限制html中input标签输入空格
- java如何将集合中连续的数值间隔开
- 《C专家编程》学习笔记-1.10
- Python: 类(Class)