您的位置 首页 知识

指针类型占多少字节(c语言指针p和*p区别)

64位操作系统中各类型指针字节?

long类型和指针类型长度为8个字节,string类型是40个字节,其他类型与32位系统的字节数一样。其他类型如下:

1:整形

int 4字节
long int 4字节
short 2字节
unsignedint 4字节
unsigned long int 4字节
unsigned short 2字节

2:字符型

char 1字节
unsigned char 1字节

3:浮点型

float 4字节

double 8字节

long double 8字节

unsigned long double 8字节

unsigned double 4字节

4:字符串型

string 28字节

5:指针类型

所有类型的指针都是4字节

6:函数
除了void型,其他都函数占有的字节数等于函数的返回类型所占有的字节数,与函数体内部无关。

c语言的指针部分*p与p的区别是什么?

c语言的指针部分 *p与p区别如下:

1、作用不同 *p表示此指针指向的内存地址中存放的内容。 p是一个指针变量的名字,表示此指针变量指向的内存地址。

2、输出内容的格式不同 *p常用在一个和指针类型一致的变量或者常量。 p输出一个指针的地址,通常是输出一个16进制的数。

3、效果不同 *p是让编译器从指定的地址中读取出数据。 p是用来存放要读取数据的地址。

有关指针类型的定义问题

指针类型,是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。

在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。

C++自定义的一个函数传入一个指针类型的形参,方法体内正确输出但main输出乱码

  • 在一个函数对一个二叉树指针进行操作之后,结束函数前输出data,函数结束后回到main方法里面同样输出data,第二次输出的data为不断乱码,最后自动关闭了
  • 贴代码,不要贴图

新手报错c++数组下标要求数组或指针类型

  • 想要一个程序,输入数n后,再输入n个数,之后将这n个数倒序输出,我写的就报错error c21009下标要求数组或指针类型~~求助!!#includeiostreamusing namespace std;int main(){int number;cout "please enter a number";cin number;const int n = number;int NUMBER{ n };for (int i = 0; i n; i++){cin NUMBER[i];}for (int i = n; i 0;i–){cout NUMBER[i] endl;}}
  • 一、int NUMBER{ n };二、for (int i = n; i 0;i–) 这里改为 for(int i=n-1;i=0;i–),数组下标从0开始

c++指针类型的强制转换问题

  • int a = 65;int * ip;int * vp = &a;cout *(char*)vp endl;ip = (char *)vp;cout (*ip) endl;为什么第4行是对的,而第五行说不能将char*类型的值分配到int*类型的实体
  • ip = (int *)vp;

求大神指导为什么c++输出指针所指向的char类型的数组时会输出乱码

  • cout "输入舞者姓名和性别(f 或 m 不区分大小写) ,空格分隔,以# #结束:"endl;cin p.name p.sex;然后我就赋值void SqQueue ::Append(const person &e)m_rear-name[20]=e.name[20];然后再输出cout p.name 然后输出的就全是乱码了,为啥啊:
  • 编码不支持中文,你的姓名输入英文应该可以

求助~~ 关于C指针强制转换类型的问题

  • 定义两个结构体: struct t1;struct t2;现在一个函数内部,定义一个指针ptr,如果满足某一条件,就把ptr转为t1类型使用,如果不满足条件,就把ptr转为t2类型使用。求解实现过程及原理
  • typedef union tagTestType{struct t1 t1val;struct t2 t2val;}TESTTYPE, *P_TESTTYPE;TESTTYPE temp;P_TESTTYPE ptr = &temp;用联合体吧,比较能符合你的要求,不需要强制强制转换,如果用ptr-t1val,就是strct t1类型,如果用ptr-t2val,就是struct t2类型。或者这样子(使用类型转换):struct t1 t1val;struct t2 t2val;void *ptr;if 条件1{ ptr = &t1val; ((struct t1*)ptr)-结构体的值;}else { ptr = &t2val; ((struct t2*)ptr)-结构体的值;}

数组名是一种常指针(不能修改),其值等于数组占据内存单元的首地址,但其类型取决于数组的维数。

  • 数组名是一种常指针(不能修改),其值等于数组占据内存单元的首地址,但其类型取决于数组的维数。“”数组名是一种常指针(不能修改),其值等于数组占据内存单元的首地花绩羔啃薏救割寻公默址,但其类型取决于数组的维数。 ”这话什么意思呀?
  • 1、其实这个知识点很简单,但书上描述的比较模糊。2、举个例子; int a[]={1,2,3,4}; 数组为a,其元素包括1,2,3,4,你可以a[0]=tangram_guid_1357807010503,a[1]=??,….但是不能a花绩羔啃薏救割寻公默=??这样的赋值,因为a本身不是变量,而是该数组的首地址,是个常量,而常量不可改变,故不可赋值。不知解释的明白否

关于指针类型的赋值

  • 比如说int *p = 10; char *c = &p;就相当于char *c再指向P问指针P和C有什么关系关联?
  • 首先这样写就是不合适的(编译器应该会报错),因为char *c = &p,p并非char型。假设强制转换一下,赋值成功的话,c就是p的指针,即c存储的是变量p的地址

()是指针对各种类型客户提供标准化或定制化的个人金融产品 A渠道差异化服务 B服务质量差异化服务

  • ()是指针对各种类型客户提供标准化或定制化的个人金融产品A渠道差异化服务B服务质量差异笭单蒂竿郦放垫虱叮僵化服务C产品差异化服务D人员差异化服务
  • C.产品差异化服务

C语言指针类型问题

  • 指针为什么分类型呢?既然任何类型的指针都指向某一个存储单元,干嘛还要分如char *, int *, float *这些东西呢?如果说 是因为 当用到pointer = pointer + 1;这种语句时,pointer类型为char * ,那么指向下一个字节pointer 为int * ,那么跳过三个字节指向下一个为了实现这个简单功能,就额外弄出几种指针类型,这不是小题大作吗?我想问得是,规定这些不同类型指针还有别的作用吗?
  • 知道指针的类型,我们就知道指针所指向的数据是存储的什么类型的数据,我们才能对这些数据进行正确的操作,这是一种很方便的约定。就好比我们的货币为什么要有1,2,5,10,20,50,100不同的面值?只发行一分的货币可不可以?不过也不要忘了有一种指针叫void * point,这个就是没有具体类型的指针,你可以强制转换成约定的类型

返回顶部