C语言随记-1
涉及指针、数组、函数指针
几种声明形式
int *a[5]; // a是一个有5个元素的数组,每个元素是整数类型指针(int *)
int *a[] = {0x100, 0x104, 0x108, 0x10c, 0x120}; // 0x100,...,0x10c,0x120表示物理地址
注: 第二条代码,gcc会报waring
int *a[]; //语法错误,需要指定数组长度
int (*a)[]; // a是一个指针,指向整型数组第1个元素,数组元素个数没有限制
int (*a)[10]; // a是一个指针, 指向整型数组第1个元素
Example:
int a[2] = {1,2};
int b[] = {1,2,3,4};
int (*p1)[];
int (*p2)[2];
| 表达式 | gcc | vs2012 |
|---|---|---|
| p1 = &a | pass | error C2440: “=”: 无法从“int ()[2]”转换为“int ()[]” |
| p1 = &b | pass | error C2440: “=”: 无法从“int ()[4]”转换为“int ()[]” |
| p2 = &a | pass | pass |
| p2 = &b | warning: assignment from incompatible pointer type | error C2440: “=”: 无法从“int ()[4]”转换为“int ()[2]” |
gcc的结果更接近我的理解,原本认为p2=&b是error,最后编译时却只是warning;
vs对类型检查很严格,int ()[]、int ()[2]、int (*)[4]分别是三种不同类型,vs应该有编译参数可以控制类型检查严格程度,我不清楚。
int a[2][3]; // 二维数组
int a[][]; //不允许不完整声明,语法错误
int a[][3]; // 不允许不完整声明,语法错误
int **a; // 指针的指针
int (*a)[3] // a是一维数组的指针,含义等价于int a[][3]
int f(); // f是函数
int (*f)(); // f是函数指针
int (*f[10])(); // f是有10个函数指针的数组,函数返回类型为int,参数为void
int *f(); // f是函数,返回值类型为 int *,参数为void
int *(*f)(); // f是函数指针,函数类型为int *f()
int *(*f[10])(); // f是函数指针数组,数组长度为10,元素类型为int *(*f)()
C语言随记-1的更多相关文章
- 递归转手工栈处理的一般式[C语言]
是任意形式的递归,是化解的一般式. 主题所谓的“递归调用化解为栈处理”,意思是,将递归函数调用化解为“一个由stack_push stack_pop stack_top等函数调用组成的循环式子”.这里 ...
- 图灵机(转自wiki)
图灵机(英语:Turing machine),又称确定型图灵机,是英国数学家艾伦·图灵于1936年提出的一种抽象计算模型,其更抽象的意义为一种数学逻辑机,可以看作等价于任何有限逻辑数学过程的终极强大逻 ...
- 什么是NFA(不确定的有穷自动机)和DFA(确定的有穷自动机)
本节知识点是<编译原理>第三章-词法分析,学习参考教材为清华大学出版社<编译原理>第三版: 前情提要: 字母表∑1和∑2的乘积( product): ∑1∑2 ={ab|a ∈ ...
- JavaScript如何诞生
JavaScript之父谈语言诞生记 发表于2011-06-27 10:30| 9749次阅读| 来源ruanyifeng.com| 0 条评论| 作者阮一峰 prototypeprimitiveja ...
- HTML超标记语言
Html超文本标记语言,负责描绘Web世界的骨架. 〇.工具 http;//www.w3cchool.com.cn 一.Tim Bemers Lee 万维网之父: Html设计者: W3C创始人: ...
- 记C语言浮点数运算处理 "坑" 一则
看一小段C语言程序: int main() { float x = 1.3; x = x - (int)x; ); ; } 在你心目中, 变量 I 是怎样的结果? 如果你理所当然地认为是3的话, 那么 ...
- 【实习记】2014-08-19升级vim配置YouCompleteMe并debug的过程+qtcreator有语言包没法换语言
做了个小项目,有空闲可以做点事了. 偶然查资料看见YouCompleteMe的鼎鼎大名. 演示demo <img src="http://i.imgur.com/0OP4ood ...
- 记一次erlang语言bug导致rabbitmq的队列没有消费者的问题
公司开发和测试环境采用的erlang版本是19.0.3,rabbitmq版本为3.6.10.集群条件下稳定使用了近一年时间,没什么问题. 为了保持和线下一致,线上生产环境采用了相同的版本,运行几个月后 ...
- My SQL随记 001 常用名词/结构化语言
DBMS (Database Management System) 字段/域(列名或者列头 如:姓名身高性别为字段) 姓名 身高 性别 小周周 157 女 记录(一行数据 如:小周周 157 女 ) ...
随机推荐
- 前端bug记录---不定时更新
在项目的开发中难免遇到各种各样的bug,我觉得还是有必要记录一下的,方便日后查询. safari window resize 为满足日常轮播需求,做一个符合当前业务的轮播插件,其中需要考虑windo ...
- Collection使用方法
package cn.stat.p3.conection.demo; import java.util.ArrayList; import java.util.Collection; import j ...
- angular请求传递不了数据
var data={ 'id':ztreeParent.id } $http({ url:'/rcCategoryControler/deleteRcCategoryById', method:'GE ...
- Struts2:ValueStack
一.ValueStack 1 .ValueStack是一个接口,在struts2中使用OGNL(Object-Graph Navigation Language)表达式实际上是使用 ...
- Js收藏-转
/** * <P> Title: JavaScript Util </P> * <P> Description: JavaScript 工具 </P> ...
- python之6-2高阶函数
1. map函数 map(函数A,字符串或者列表) map函数的意思是将函数A依次作用到字符串的每个字符或者列表的每个元素. 例如: map(lambda x: x*x,[1,2]) [1, 4] 这 ...
- Kafka笔记--常用指令(删除topic)
删除topic 首先需要设置server.properties,最后一行添加 delete.topic.enable=true 然后运行> ./kafka-topics.sh --zookeep ...
- 第一个微信小程序(实现点击一个按钮弹出toast)
今天根据网上的教程搭建了微信小程序的环境,然后看文档做了一个简单的小应用. 项目的目录是这个样子的: app.js.app.json.app.wxss是全局文件,必不可少的文件.定义在app.wxss ...
- [SDOI2008]仪仗队
P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线 ...
- 由于 UNION ALL Chinese_PRC_CI_AS”之间的排序规则冲突,值的排序规则未经解析
由于不同的表之间的排序规则不一样,在归并集合的 时候会出现排序问题. 只要在查询的列后面 声明结果列的排序规则保持一致即可: SELECT b0.[CardCode] collate SQL_Lat ...