32位的程序指针应该是占用4字节
16位的就是2字节
应该是这样吧..至少我用sizeof显示的就是这样..
问题是我看了下8086CPU关于内存访问
是段地址*16+偏移地址
那么,指针里面的究竟什么地址?
32位的是Windows的,我不知道是不是还保留以前段地址这个东西
但是,16位的程序呢?如果指针只占用2字节,那么这2字节是什么地址?
如果是偏移地址,那段地址在哪里?
C语言指针问题
则表达式 *y+2的值是'5' 。分析:y是字符串数组首元素'3'的地址,*y的值就是字符'3',再加上2,就是字符'5'(也可以说是字符'5'的ASC码值)。二、 如有定义char z[2][4]={"MAT", "LAB"};,则表达式*(*z+2)的值是 'T'。分析:z是二维字符串数组首字符串“MAT”的地址,*z...
c语言指针问题 不理解步骤 特别是p-a<10 到底是什么逻辑?望解答谢谢...
首先需要了解数组和指针之间的关系。int a[10]定义了一个10个int值长度的数组,那么a既是数组名,同时本质上也是数组的首地址,或者说是数组第一个元素的地址;并且C 语言的数组名是不能赋值的,也就是a永远指向数组的首地址。p = a,因为p是一个int型的指针,因此此处p初始化指向了数组a的首地...
c语言指针问题
就是 char *p=*s; 或 等价于: 声明 char *p; 语句 p=*s; 让 p 指向 char s[3][8];的始地址 &s[0][0]。 目的是 让 p 有了字符\/字符串存放空间。你也可以理解: p=*s; 即 p= *(s+0); 即 p=s[0]; p=&s[0][0];p 有了字符\/字符串存放空间。
问一个关于C语言指针地址的问题?
1、&a是取a变量的内存地址,把这个地址值存入b变量逻辑上是没有问题的。但存地址有专门的存地址的箱子的类型(int*),b是存整数的箱子类型(int)啊,所以应该进行显式(强制)类型转换,变成:1 int a=100;2 int b=(int)&a;2、在定义变量语句中的int *b和表达式中的*b确实不代表同一个...
C语言指针问题
定义指针p,int *p = &a, 意思是把p指向a的地址 p[0]即a的值,0代表p指针向后移的位数,也就是没有移动p指针,所以可以输出a p跟p[0]的意思相同,*是取值,与&正相反,意思是取这个地址上的值,所以可以输出a &a可以看成*(&a),也就是*p,等于a 而C终的&*a, a是一个变量而不...
C语言 指针的问题 *a *a *point *point *point 各代表什么意思_百度...
point = &a &a是a的地址, 再前面加*操作, 又变成了地址中的数据 &*a a不是指针变量,*a是错误的语句 &point &point是point的地址,前面加*操作,就是指针point变量,也就是a的地址 &*point 这样写,得到的是a的地址 point *后指针变量,就是地址中的数据,相当于调用a追问谢谢你!!追答...
C语言指针问题
1、ptr赋值为arr地址后指向第一个元素,即元素6.2、*(ptr++) += 123;由于是右侧操作(递增后缀),所以先取ptr地址后再递增ptr,此时取得的地址还是第一个元素地址(递增后ptr指向第二个元素,也就是7,这是第一次递增),因此是对6+123=129,并保存原地址,即第一个元素地址,因此6被改为129...
C语言字符指针问题
举一个不是很严谨的例子。假设系统给hello的存储地址是从1开始的。那么h的存储地址是1,e的存储地址是2,以此类推。指针p指向的地址,其实是h的存储地址1。所以你用字符串输出时,用的是指针p。而*p代表的是1这个存储地址保存的值。那就是h。所以,你输出时,只能用字符输出:%c。(p+1)则代表2...
C语言指针问题
假如 P 是指针 那么 *p 就代表变量。 而&a是地址, *p=&a 就是把地址给变量,当然不正确了,因为地址只能给指针。p2,*p1都是变量,变量之间互相赋值是正确的。“原因是被赋值的指针变量前不能再加*说明符”这句话的意思是:如果 给 指针P加上“*”,那么它就变成 了变量,代表的意义...
C语言中的 指针 和 地址的关系?
指针保存了某个变量的地址 而指针本身其实也是一个变量,它也有自身的地址, 而指针的内容是某个变量的地址 内存是有地址的,就像每个具体的地方都对应了唯一一个地址一样 比如我在一张纸上写了某个地方的地址 这张纸不等于地址,但是通过这张纸,你可以找到这个地方 ...