c语言关于指针比大小的问题,求解析

c语言关于指针比大小的问题,求解析,第1张

输入2,3

输入为:max=2,

min=3

注意:

swap(int

p1,int

p2){

int

temp;

temp

=

p1;

p1

=

p2;

p2

=

temp;

}

函数参数p1,p2是形参(恰巧与main中的p1,

p2同名),swap只交换了参数p1,

p2的值,而没有改变main中两个变量p1,

p2!!

。。。你函数都用错了,不要用fgets读取文件里的单词,用fscanf(infile,"%s",buffer),根据%s的特性,这个语句只会读取单词,不会读取空格,另外你的标题。我没看懂,获取字符型指针长度? 这个指针长度你是获取不了的,因为指针存的是地址,那么任何一个类型的数据都可能会放在地址很大的内存上,所以对于指针来说,要求就是必须能容纳下很大的地址,所以不管是指向哪个类型的指针 他们占的字节都是一样的,而且是4个字节

百度知道

c语言指针函数比较一串数字大小! 为何不能正展开

ring_year

TA获得超过1422个赞

关注

成为第11位粉丝

#include "stdioh"

void max_min(int p,int n,int &max,int &min)// 修改

{

int i;

max=min=p[0];// 修改

for(i=1;i<n;i++)

{

if((p+i)>max) max=(p+i);// 修改

if((p+i)<min) min=(p+i);// 修改

}

// return;// 修改,当然这句不改没关系

}

void input_data (int p,int n)

{

int i;

for(i=0;i<n;i++)

scanf("%d",p+i);

}

int main()

{

int a[30],max,min;

input_data (a,30);

max_min(a,30,max,min);// 修改

printf("max=%d,min=%d",max,min);

return 0;

}

指针变量无非就是一个表示内存地址的长整数而已,当然可以比较。指向同一个数组时,两个指针的大小就表示谁指向的元素靠前或靠后。如果不是指向同一个数组,比较大小就只能看出谁指向的内存空间地址较小,没什么意义。

对变量a的访问有两种方式:

一是直接按地址0x065FDF4H找到a的存储单元,从而对变量a进行访问;

二是按系统为p=&a分配的地址先找到p=&a,然后根据p,&a的值(即变量a地址0x065FDF4H)找到变量a在内存中的存储单元,从而对变量a进行访问。对于前一种访问方式称为直接访问方式,后一种访问方式称为间接访问方式。

扩展资料

访问变量,首先应找到其在内存的地址,或者说,一个地址唯一指向一个内存变量,如果将变量的地址保存在内存的特定区域,用变量来存放这些地址,这样的变量就是指针变量,通过指针对所指向变量的访问,也就是一种对变量的“间接访问”。

设一组指针变量pa、pb、px、py、pm、pch1、pch2,分别指向上述的变量a、b、x、y、m、ch1、ch2,指针变量也同样被存放在内存,尽管所指向的变量类型不同,但是这些指针变量所占内存空间都是2个字节,而与所指向变量的类型无关。

偶知道你怎么运行不出来了。。

scanf("%d,%d",&a,&b);

在输入的时候要记得输入 “,”

例如 若进行3和1的比较 则输入应为3, 1 逗号后要有空格,表示一个数据输入完成,输入下个数据。

指针即为地址,指针几个字节跟语言无关,而是跟系统的寻址能力有关。

比如以前是16位系统,指针即为2个字节,现在一般是32位系统,所以是4个字节。

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值或者叫指针所指向的内存区、指针本身所占据的内存区。

扩展资料:

1、指针的类型

从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型:

(1)intptr;//指针的类型是int

(2)charptr;//指针的类型是char

(3)intptr;//指针的类型是int

(4)int(ptr)[3];//指针的类型是int()[3]

(5)int(ptr)[4];//指针的类型是int()[4]

2、指针所指向的类型

当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。

从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符去掉,剩下的就是指针所指向的类型。例如:

(1)intptr; //指针所指向的类型是int

(2)charptr; //指针所指向的的类型是char

(3)intptr; //指针所指向的的类型是int

(4)int(ptr)[3]; //指针所指向的的类型是int()[3]

(5)int(ptr)[4]; //指针所指向的的类型是int()[4]

3、指针的值或者叫指针所指向的内存区或地址

指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32 位程序里,所有类型的指针的值都是一个32 位整数,因为32 位程序里内存地址全都是32 位长。

指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区。以后,我们说一个指针的值是XX,就相当于说该指针指向了以XX 为首地址的一片内存区域。

我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。指针所指向的内存区和指针所指向的类型是两个完全不同的概念。在例一中,指针所指向的类型已经有了,但由于指针还未初始化,所以它所指向的内存区是不存在的,或者说是无意义的。

4、指针本身所占据的内存区

在32 位平台里,指针本身占据了4 个字节的长度。

参考资料来源:百度百科-指针

以上就是关于c语言关于指针比大小的问题,求解析全部的内容,包括:c语言关于指针比大小的问题,求解析、C语言 获取字符型指针长度的问题、c语言指针函数比大小为什么输出的值不对等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9831068.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存