积累的数组和指针的关系

C/C++的数组和指针基本等价,但也有细微的不同。

可以把数组名直接赋值给指针,也可以用数组第一个元素的地址给指针赋值

double a[5]={2,4,6,9,23};
short stdd[2]={3,5};

double * c = a;
short *d = &stdd[0];

指针变量+1 = 指向数组中第二个元素,如c=c+1,c[0]=4;

对指针操作就像对数组一样

*(c+1) = c[1] = a[1]

用sizeof用于数组得到的是整个数组的长度(字节数),sizeof用于指针得到的是数组第一个元素的字节数。

用new运算符可以动态申请内存空间,用delete删除

int * hh = new int [4]
delete [] hh

strlen()和sizeof()的区别

char f[12]="werc";
sizeof(f)/sizeof(char) = 12
strlen(f)/sizeof(char) = 4

!不要使用字符串常量或未被初始化的指针来接受输入。

时间: 2024-07-30 11:36:40

积累的数组和指针的关系的相关文章

你必须知道的指针基础-2.指针的声明和使用及数组和指针的关系

一.计算机知道数据类型吗? 1.1 神奇的数据类型 At first,计算机中绝大部分数据都放到内存中的,不同的数据放到不同的内存区域中.But,内存角度没有数据类型,只有二进制:数据以字节(8位二进制)为单位存取.不同数据类型占据不同的字节,例如在32位系统中:int 为4个字节,short为2个字节(下面如未特殊声明,均为32为系统环境下的说明).下面我们看看int类型.short类型和double类型的数字分别在内存中如何存储: ①int类型:99999 由于int类型占4个字节,每个字节

数组和指针的关系

数组名本身就是地址或指针值,数组和指针都可以通过下标来访问.尽管指针和数组在访问内存的方式上几乎是相同的,但它们还是有区别的.指针变量可以取不同的地址作为它的值,但数组本身就是个地址,它是固定的. 假设a是个数组,i是个int变量.有一个基本的事实是: a[i] 相当于 *(a + i) 表达式a[i]的值就是数组第i个元素(从0开始计数)的值,而*(a + i)是对表达式a + i进行解引用.后者是个指针表达式,指向a之后的第i个元素的位置. 这意味着我们可以在指针中使用数组记法. 当一个数组

c语言中多维数组和指针的关系

如图: 执行结果: 说明:由执行结果可知,三个输出的结果相等(可能在不同的平台执行结果不相同,但三个的结果是相等的),数组multi的地址与数组multi[0]的地址相同,都等于存储的第一个整数的地址(multi[0][0])

C语言关于数组与指针内容小结

数组的基本概念 什么是数组:数组就是:数组是相同类型的元素的一个集合       类型说明符 数组名 [常量表达式]: 其中,类型说明符是任一种基本数据类型或构造数据类型.数组名是用户定义的数组标识符.方括号中的常量表达式表示数据元素的个数,也称为数组的长度.例如: int a[10]; /* 说明整型数组a,有10个元素 */ float b[10], c[20]; /* 说明实型数组b,有10个元素,实型数组c,有20个元素 */ char ch[20]; /* 说明字符数组ch,有20个元

几个关于数组、指针的易错点

指针是某个变量的地址,是一个地址. 指针变量是存放指针(某个变量地址)的变量,是一个变量. 指针变量是一个变量,也有它自己的地址:这几句话对理解指针非常有帮助. 举例: int c = 76; int *pointer = &c; 普通变量 c 和 指针变量 pointer 在内存中的形式如下图: : 指针变量pointer 有它自己在内存中的地址,见上图黄色区域,指针变量的值存放着一个地址,见上图红色方框中的蓝色方框中的地址,这个地址指向变量c,也即这个地址和变量c的地址相等: 我们把c,c的

数组与指针(二)

对于数组,我们最为头痛的莫过于数组与指针的关系.在我看来,想要把数组和指针的关系理解通透,关键在于理解指针的关联类型(每个指针都有一个与之关联的数据类型).因为文章的篇幅比较长,所以分成了两篇,这是第二篇(没看第一篇的可以先看这里哦,磨刀不误砍柴工,大家要有点耐心 ^ ^ )http://www.cnblogs.com/CatDrinkMilk/p/4331355.html 二维数组与指针 在C++中,其实并没有真正意义上的多维数组,所有的多维数组其本质都是数组的数组(这句话很拗口,大家要多想几

数组与指针(数组中所有元素的和)

//1.下面这个例子是计算数组中所有元素的和 //数组与指针的关系,整型是4个字节,a[] == *a, a[i] = *(a+i) #include <stdio.h> #define SIZE 10 int sum (int a[],int n); int main(){ int ar [SIZE] = {10,20,30,40,50,60,70,80,90}; long answer; answer = sum(ar, SIZE); //重点是这一句,ar为int [10]类型 prin

C语言核心之数组和指针详解

寒假要开始猛刷<剑指offer>,先回顾一下C语言基础做个热身. 指针 相信大家对下面的代码不陌生: 1 int i=2; 2 int *p; 3 p=&i; 这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而是变量的地址.如上代码,指针p中保存的是整型变量i的地址信息. 接下来看如何定义一个指针,既然指针也是一个变量,那么它的定义也和其它变量一样定义:如: int *p: .'*' 是间接寻址或间接引用运算符.上例中我们还

c++ 数组 与指针

指针 相信大家对下面的代码不陌生: int i=2;                                             int *p;                                              p=&i; 这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而是变量的地址.如上代码,指针p中保存的是整型变量i的地址信息. 接下来看如何定义一个指针,既然指针也是一个变量,那么它的定义也和