指针地址的输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针地址的输出相关的知识,希望对你有一定的参考价值。

n"? int型不是只有2个字节吗;stdio; int *ip=&a; printf(".h> printf(" void main() int a=50?那样的话应该是166呀,ip+4),ip);%d\;%d" 若第1个printf语句输出158第2个为什么是174呀?为什么不对呀谢谢了#include<

参考技术A 内存地址一般是以十六进制表达的,所以直接用cout
<<
p的话,cout自动调整输出,所以输出的是十六进制,如果想以十进制输出,就要用你那样的强制转换。

C-学会使用指针

先说:唯手熟尔

指针

  1. 指针存储着一个内存空间的地址
  2. 定义一个指针
int a;
int * p;

定义一个指针,只需在变量前面加一个 * 号。这里的指针只能存储一个存放整数的内存空间的地址

  1. 指针如何存储地址
p = &a;

&叫取地址符。这样整形指针p获得了整型变量a的地址。理解为指针p指向了整型变量a

  1. 可以通过指针p来操作变量a。
    例如,输出变量a的值
int a=10;
int * p;
p=&a;
printf("%d",* p);

这里的 * 号是间接访问运算符。作用是取得指针p所指向的内存中的值。

  1. C语言中 * 号有三个用途
  • 乘号。加减乘除
  • 声明指针变量。在定义指针变量时使用,如:int * p;
  • 取得指针所指向的内存中的值。简介访问运算符。例如printf("%d",* p);

malloc函数

  1. 在内存中存储整数10
  • int a=10;
  • malloc(4);
  1. 使用malloc函数会从内存中申请分配指定字节大小的内存空间。此处申请的是4个字节。不知道int类型4个字节还可以通过sizeof(int)获取int类型所占字节数。申请好4个字节空间后,就需要用一个指针来指向这个空间。
int * p;
p=(int * )malloc(sizeof(int));

需要注意的是,malloc函数返回类型是void * 类型。void * 表示未确定类型的指针。在C语言和C++,可被强制转换为任何其他类型的指针。此处我们将其强制转化为整形指针

  1. 指针存储的是某空间地址,那为什么分不同类型的指针呢?
    是为了让系统知道某空间应该取多少个连续内存作为一个数据。
  2. 例子
    存储整数10的代码如下
#include <stdio.h>
#include <stdlib.h>
int main()
{
	int *p;
	p=(int * )malloc(sizeof(int));
	* p=10;
	printf("%d",* p);
	return 0;
 } 
  1. 为什么要用如此复杂的办法存储数据?
    预先的方法我们必须预先准确的知道所需变量的个数,也就是说我们必须定义出所有变量。定义一百个,程序就只能存储一百个。通过malloc函数我们可以在程序运行的过程中根据实际情况来申请空间

最后:个人觉得指针和malloc函数谁都离不开谁。malloc申请的内存需要指针指示,而指针用来指示一个不确定的空间才发挥了真正作用。





以上是关于指针地址的输出的主要内容,如果未能解决你的问题,请参考以下文章

c++中,如果cout 或者cin char类型的数组名,指针,都会把字符串输出,而不是输出地址,

已知int a,*p=&a;输出指针pa十进制的地址值的方法是

C指针1

c语言如何输出指针所指向的值

06 指针入门

如何在C语言中用printf()输出某个值的地址?