#运算符、不同的指针类型、数组和指针、指针运算、堆、栈、静态区、只读区、下标VS指针
#运算符:用于在预编译期将宏参数转换为字符串
#define CONVERS(x) #x //注:没用双引号包括。
不同类型的指针占用的内存空间大小相同。
局部变量 定义:
a[5];
打印a[i]时,a[i]为随机数。
若定义a[5]={1,2};
打印时,a[0]=1;a[1]=2;a[2]=a[3]=a[4]=0;
数组地址与数组名:
1.数组名代表数组首元素的地址。 a=&a[0];
2.数组的地址需要用取地址符号&才能得到 (&a)
3.数组首元素的地址值与数组的地址值相同。
4.数组首元素的地址与数组的地址是两个不同的概念。

a+1:(unsigned int)a+sizeof(*a)//加上一个元素大小。
&a+1:(unsigned int)(&a)+sizeof(*&a)//加上整个数组大小。
指针和数组
编译器对数组和指针处理不同。
处理指针:一次寻址操作。
char *p=“HW”
访问p时->先找到内存空间->再从内存空间取得地址->根据地址找到HW。(做了一次寻址操作)
处理数组:无寻址,直接去访问。
char p[] = "HW"
指针的运算:与整数的运算规则为
P+n:(unsigned int)p+n*sizeof(*p);
指针之间的减法:注此指针必须类型相同
P1-P2:((unsigned int)p1-(unsigned int)p2)/sizeof(type);
结论:
1.当指针P指向一个同类的数组的元素时:
P+1:将指向下一个元素。
P-1:将指向上一个元素。
2.当2个指针指向同一个数组中的元素时,指针相减才有意义,为指针所指向元素的下标差。
堆区:申请的内存空间 heap。
栈区:局部变量 stack
静态区:静态变量,全局变量空间。
只读区:分配常量和程序代码空间
在main.cpp int a=; //全局初始化区
char *p1;//全局未初始化区
main()
{
int b;//栈区
char s[] = "abc";//栈区
char *p2; //栈区
char *p3 = "";123456在常量区,P3在栈区
static int c = ;全局(静态)初始化区
P1=(char*)malloc(); //堆 }
求一个数组中元素的个数:
DIM(a) = sizeof(a)/sizeof(*a);
下标VS指针:
1.从理论上而言,当指针以固定增量在数组中移动时,其效率高于下标产生的代码(下标时,乘法很耗时)。
2.当指针增量为1且硬件具有硬件增量模型时,表现更佳。
#运算符、不同的指针类型、数组和指针、指针运算、堆、栈、静态区、只读区、下标VS指针的更多相关文章
- 11-C语言指针&一维数组&字符串
一.用指针遍历数组元素 1.最普通的遍历方式是用数组下标来遍历元素 1 // 定义一个int类型的数组 2 int a[4] = {1, 2, 3, 4}; 3 4 int i; 5 for (i = ...
- 指针类型(C# 编程指南)
原文地址:https://msdn.microsoft.com/zh-cn/library/y31yhkeb.aspx 在不安全的上下文中,类型可以是指针类型.值类型或引用类型. 指针类型声明采用下列 ...
- C#基础指针类型
在C#的不安全的代码书写中,类型可以是指针类型.值类型或引用类型. 指针类型声明具有下列形式之一: type* identifier; void* identifier; //allowed bu ...
- C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用
类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...
- void类型和void *指针类型(网上摘抄总结)【转】
http://www.blogjava.net/fhtdy2004/archive/2009/07/09/286004.html 现在在学linux编程过程中遇到很多void *指针类型,由于c很早学 ...
- C语言中指针和数组
C语言数组与指针的那些事儿 在C语言中,要说到哪一部分最难搞,首当其冲就是指针,指针永远是个让人又爱又恨的东西,用好了可以事半功倍,用不好,就会有改不完的bug和通不完的宵.但是程序员一般都有一种迷之 ...
- c++用指针交换数组
对于指针一直很迷,今天看了一下指针交换数组,知识量很少,希望能帮助到大家. 利用指针来交换数组主要是为了节省时间嘛,有两种交换方式 第一种是写一个函数把数组传过去然后用swap交换,即可 代码如下: ...
- 指针、数组与sizeof运算符
指针.数组与sizcof运算符 (1)sizeof是c语言的一个运算符(主要sizeof不是函数,虽然用法很像函数),sizeof的作用是用来返同()里面的变量或者数据类型占用的内存字节数. (2)s ...
- Swift中对C语言接口缓存的使用以及数组、字符串转为指针类型的方法
由于Swift编程语言属于上层编程语言,而Swift中由于为了低层的高性能计算接口,所以往往需要C语言中的指针类型,由此,在Swift编程语言刚诞生的时候就有了UnsafePointer与Unsafe ...
随机推荐
- CSS浮动与清除浮动(overflow)例子
在css中浮动与清除浮动功能是我们开发中常用到的一个功能了,下面小编来为各位分析关于CSS浮动与清除浮动(overflow)例子吧. float脱离文本流,可是为什么文字却会有环绕的效果,这点实在是神 ...
- 数据库 proc编程四
错误处理机制 当在Pro*C/C++应用程序中运行SQL语句中,Oracle会将最近执行的SQL语句的状态信息存储到状态变量SQLCODE.SQLSTATE或者SQLCA结构中. 当SQL语句执行成功 ...
- jQuery替换内容
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- Lifecycle for overriding binding, validation, etc,易于同其它View框架(Tiles等)无缝集成,采用IOC便于测试。
Lifecycle for overriding binding, validation, etc,易于同其它View框架(Tiles等)无缝集成,采用IOC便于测试. 它是一个典型的教科书式的mvc ...
- 【wikioi】3160 最长公共子串(后缀自动机)
http://codevs.cn/problem/3160/ sam的裸题...(之前写了spoj上另一题sam的题目,但是spoj被卡评测现在还没评测完QAQ打算写那题题解时再来详细介绍sam的.. ...
- HDU 1284 钱币兑换问题(全然背包:入门题)
HDU 1284 钱币兑换问题(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1284 题意: 在一个国家仅有1分,2分.3分硬币,将钱N ( ...
- MongoDB基本用法
MongoDB基本用法(增删改高级查询.mapreduce) 分享一下我经常用到的自己写的mongo用法示例 该示例基于当前最新的mongo驱动,版本为mongo-2.10.1.jar,用junit写 ...
- Hadoop单机安装配置过程:
1. 首先安装JDK,必须是sun公司的jdk,最好1.6版本以上. 最后java –version 查看成功与否. 注意配置/etc/profile文件,在其后面加上下面几句: export JAV ...
- FAIL : SSHException: Incompatible ssh peer (no acceptable kex algorithm)问题解决及更新paromiko失败问题解决
转自:http://blog.csdn.net/qy924565830/article/details/52164256 http://blog.csdn.net/coder_xia/article/ ...
- leetcode -- Balanced Binary Tree TODO
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...