对指针加1的意义

eg:int a[5]={1,2,3,4,5};

a表示数组首地址,也就是a[0]的地址;a+1表示下一元素的地址,即a[1]的地址;

&a表示对象(数组)首地址;              &a+1表示下一对象的地址,一个对象有和a一样大小的元素,因此&a+1等价于&a+5*sizeof(int),也就是a[5]的地址。

时间: 2024-11-10 13:58:06

对指针加1的意义的相关文章

C 提高2 间接赋值(*p) 是指针存在的最大意义

1野指针强化: #include <stdio.h> #include <stdlib.h> #include <string.h> // 野指针产生的原因 //指针变量和它指向的内存空间变量是两个不同的概念 //释放了指针所指向的内存空间,但是指针变量本省没有重置为NULL //造成释放的时候,通过if(p1 != NUll) //避免方法: // 1)定义指针的时候,初始化成NULL // 2)释放指针所指向的内存空间,把指针重置成NULL int main() {

&lt;转&gt;Python 参数知识(变量前加星号的意义)

csdn上的牛人就是多,加油 —————————————————————————— 过量的参数 在运行时知道一个函数有什么参数,通常是不可能的.另一个情况是一个函数能操作很多对象.更有甚者,调用自身的函数变成一种api提供给可用的应用. 对于这些情况,python提供了两种特别的方法来定义函数的参数,允许函数接受过量的参数,不用显式声明参数.这些“额外”的参数下一步再解释. 注意args和kwargs只是python的约定.任何函数参数,你可以自己喜欢的方式命名,但是最好和python标准的惯用

c语言中,指针加1的情况.指针变量详细介绍

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址. 要搞清一个指针需要搞清指针的四方面的内容: 指针的类型, 指针所指向的 类型, 指针的值或者叫指针所指向的内存区, 还有指针本身所占据的内存区. 让我们分别说明. 先声明几个指针放着做例子:  例一:  (1)int *ptr;  (2)char *ptr;  (3)int **ptr;  (4)int(*ptr)[3];  (5)int*(*ptr)[4]; 指针的类型  从语法的角度看,你只要把指针声明语句里的指针名字去掉,

Python中的指针:有什么意义?

如果您曾经使用过C或C ++等低级语言,那么您可能已经听说过指针.指针允许您在部分代码中创建高效率.它们也会给初学者带来困惑,并且可能导致各种内存管理错误,即使对于专家也是如此.那么它们在Python中的位置,以及如何在Python中模拟指针? 为什么Python没有指针? 事实是我不知道.Python中的指针本身可以存在吗?可能,但指针似乎违背了Python的禅宗.指针鼓励隐含的变化而不是明确的变化.通常,它们很复杂而不是简单,特别是对于初学者.更糟糕的是,他们乞求用脚射击自己的方法,或做一些

指针加减操作

正确的输出结果为: 分析:首先,a与&a的地址是一样的,但含义不一样. a是数组元素的首地址,即a[0]的首地址:&a是数组的首地址,即整个数组的首地址. 区别在于,a+1表示数组下一个元素的地址,即a[1]的地址:而&a+1表示下一个对象(数组)的首地址.换而言之,就是在做指针的加减法的时候,地址偏移量的单位是不一样的,前者的偏移量单位是元素,后者的偏移量单位是对象. 其次,sizeof(a)和sizeof(&a)的区别, sizeof(a)是把a作为一个数组类型来测试,

C++数组和指针加减法和sizeof问题

关于指针和加减法: 指针的加减法:指针的加减法,加多少或者减多少,主要是看所指对象的sizeof值. 例子: double m = 3.0; int n = 3; double *p=&m; int* p1=&n; printf("p:%d\n", p ); printf("P+1:%d\n", p+1); printf("P1:%d\n", p1); printf("P1+1:%d\n", p1+1); 如上

关于指针的加减操作

原题: main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); } 程序输出是什么. 解答: 程序输出: 2,5 分析: 这里主要是考查关于指针加减操作的理解. 对指针进行加1操作,得到的是下一个元素的地址,而不是原有地址值直接加1.所以,一个类型为 T 的指针的移动,以 sizeof(T) 为移动单位. 因此,对上题来说,a是一个一维数组,数组中有5个元素:

【转】让你不再害怕指针——C指针详解(经典,非常详细)

前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我总结了一下其原则:从变量名处起,根据运算符优先级结合,一步一步分析.下面让我们先从简单的类型开始慢慢分析吧: [cpp] view plain copy int p; //这是一个普通的整型变量 int *p; //首先从P 处开始,先与*结合,所以说明P 是一个指针,

指针数组和数组指针

指针数组:首先它是一个数组,数组的元素都是指针.它是“储存指针的数组”的简称.int *p1[10];数组指针:首先它是一个指针,它指向一个数组.它是“指向数组的指针”的简称.   int (*p2)[10]; 这里需要明白一个符号之间的优先级问题,关键在于p1.p2先和谁结合.“[]”的优先级比“*”要高.p1 先与“[]”结合,构成一个数组的定义,数组名为 p1,int *修饰的是数组的内容,即数组的每个元素.那现在我们清楚,这是一个数组,其包含 10 个指向 int 类型数据的指针,即指针