指针存的是什么?

int a = 3;
int* p = &a;

一句话:变量名即地址!
a所在地址 存储的是 数字3
p所在的地址 存储的是 a的地址 也就是p的值为a的地址
*p解地址,p为a的地址 所以*p就是a的值 故*p=3。

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。

指针变量存放的是内存地址,那为什么指针还要定义类型? - 知乎https://www.zhihu.com/question/29622405


指针就是一个存放地址的变量 

当指针指向某个变量 

这时这个指针里就存放了那个变量的地址 

同时可以利用指针直接取变量中的值用 只要在指针前加 * 就是取其
真值了(也就是被指向的变量的值)
举个例子 int i=0,*p; 声明了一个 int 类型的 变量i和指针p 

假设i在内存中所存在的地址为aaaaa(随便写的) 

p->i 就是使指针p指向i 也就是说 指针p中存放了aaaaa这个地址 

当你操作这个p时就是直接操作了aaaaa这个地址中存放的东西 

间接操作了变量i, 

这就是指针的作用

C语言中指针变量是存在哪里的?

比如
我们的全局和静态变量放在全局区,生命周期是整个程序运行期间
我们的局部变量是放在栈区,模块执行结束后退栈
我们程序员自己开的内存是放在堆区,用完自己free

那指针算什么?是放在哪里的?
比如我
int *a;
a =(int*) malloc(10*sizeof(int));

这个a指向的内存是在堆上
但是a指针本身的4个字节是放在哪里的?

1、指针变量和普通的变量一样,编译期储存在代码当中,运行期间储存在内存里。c语言的变量值是通过该变量的内存地址寻址得到的,而对于一个已经编译好的程序,变量的地址都是确定的值,不可以更改。这是因为程序在编译时编译器已经通过语法分析把指针变量的地址值计算出来了,所以指针变量实际上不用保存在内存堆栈或数据段中,而是包含在汇编代码里面。2、指针变量里面就是整型的一个十六进制数,用来表示的就是指向某个变量的地址;指针是C语言中广泛使用的一种数据类型;利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;并能象汇编语言一样处理内存地址,从而编出精练而高效的程序;指针极大地丰富了编程语言的功能。
时间: 2024-10-17 23:57:52

指针存的是什么?的相关文章

C语言指针占用字节

指针即为地址,存的是变量的地址,在同一架构下地址长度都是相同的(cpu的最大寻址内存空间),所以不同类型的指针长度都一样. 指针占用几个字节跟语言无关,而是跟系统的寻址能力有关,16为地址指针即为2个字节,32位系统是4个字节,64位系统为8个字节. 用sizeof求长度: #include<stdio.h> void main(void) { printf("%d %d %d\n",sizeof(int),sizeof(double),sizeof(char)); } 在

C语言(四)指针概念的理解

转载请标明出处: http://blog.csdn.net/u011974987/article/details/52270018: 前言 最近真的是忙的不可开交,公司一直给安排任务,连学习和写笔记的时间都没有了,落下好几次课的笔记都没有写,所以我抽空把目前的进度给追上来,不然会越落越多.加油吧~(感觉身体都要被掏空了) 指针 我们通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的.所以,学习指针是很有必要的. 正如您所知道的,每一个变量都有一个内存位

指针指向整数,字符,及字符串时,相应地址取法

指针指向整数时: 1 #include <iostream> 2 3 int main(void) 4 { 5 using namespace std; 6 int a = 10; 7 int *p = &a; 8 9 cout << "sizeof(p) = " << sizeof(p) << endl; 10 cout << "sizeof(&p) = " << sizeof

C-Xcode真随机数的产生, 指针基础, 小技巧

小技巧1: 输出一个 % 输出一个%号(因为%是格式控制符的符号,所以输出是单独写一个%,系统会默认把%与其后面一个字符相结合当做格式控制符) —— %% 小技巧2: 自动整理代码 整理代码组合键 选中要对齐的代码 control + i 就会自动对齐 前提:代码没有语法错误 小技巧3: 产生一个真随机数 产生一个指定范围内的随机数: 比如需求:产生10-20的随机数 int num = arc4random_uniform(11) + 10 其他类推可得 公式 int num = arc4ra

【指针篇】C语言:指针与数组的区别,数组指针与指针数组的剖析。

指针就是指针,指针变量在 32位系统下,永远占 4  个byte ,其值为某一个内存的地址.指针可以指向任何地方,但是不是任何地方你都能通过这个指针变量访问到. 数组就是数组,其大小与元素的类型和个数有关.定义数组时必须指定其元素的类型和个数.数组可以存任何类型的数据,但不能存函数. 说起指针,就让我们想到数组.而数组和指针也是有区别的.指针,指的是描述一个变量的地址:我们可通过指针的偏移来指向下一个地址.数组,是描述相同元素的一个集合:数组名是常量地址,不可自加不可修改. 我们可以通过数组的下

C C++ OC指针常量和常量指针区别

看Effective Objective-C 2.0  编写高质量iOS与OS X代码的52个有效方法这本书的时候看到有一个说多用类型常量,少用#define预处理指令 ,在这里面有说到指针常量,之前学C C++的时候也遇到过, 现在算是将这些小结. 最重要的一句秘诀就是:*(指针)   const(常量)  谁在前先读谁,谁在前谁不允许改变. 下面是C C++ OC中的例子,其中在OC中指针常量只能赋值一次,不能改变 #import <Foundation/Foundation.h> int

QVariant保存指针数据

QVariant默认无法保存指针数据,因为以void *为参数的QVariant构造函数是私有的. 但通过QT提供的Meta Type机制,可以将任意指针存放到QVariant中. 需要使用Q_DECLARE_METATYPE宏注册类型. 1 2 3 Q_DECLARE_METATYPE(QStandardItemModel*) 之后,就可以使用QVariant::fromValue存放数据,使用QVariant::value获取数据了. 1 2 3 4 5 return QVariant::f

C++中的函数指针

时间:2014.06.14 地点:基地 ------------------------------------------------------------------------------- 一.函数指针简介 函数指针指向的是一个函数,而不是一个对象.但函数指针也和其他普通指针一样,指向特定的函数类型,函数的类型由返回类型和形参类型共同决定,与函数名无关,就像和变量名无关一样.比如: bool LengthCompare(const string&,const string& );

指针相关

指针指向的都是一个代表内存地址的长的十六进制数.一位十六进制数需要四个2进制数表示,即0.5字节. 指针存的是一个地址,在32位操作系统里面,最大寻址空间位0~2^32-1,即4个字节(32位)就可以表示,相应的在64位操作系统环境中用8个字节表示指针,16位系统2字节. 指针本身所占空间大小与所指对象所占空间大小无关,只与操作系统能够有关.