为什么 地址是一样的 ,但是用指针指过去的时候所得的值 是不一样的.求大神解答

问题描述

为什么 地址是一样的 ,但是用指针指过去的时候所得的值 是不一样的.求大神解答
#include
#include
int Cool(int m)
{
int array[20];
int ij;
int k=1;
int l=0;
for(i=0;m!=1;i++k++)
{

    for(j=2;j<=m;j++)    {        if(m%j==0)        {            array[k]=j;            m=m/j;            break;        }    }}//************经过我调试的结果 ,下面的程序 测试如下,然而地址  对应不上 l=k;array[0]=l-1;//printf(""他一共有%d个元素:""array[0]-1); for(i=0;i<k;i++){    printf(""n********************n%d ""&array[i]);}return array;//我要将数组传回去 

}
//**************看看是否接受到了
int main()
{
int mnk=0;
int Array[20];
int p*p1oo1;
int array[20];
int ijk1=0;
int sum = 1;
int MinSum=0;
printf(""please input the two values:n"");
scanf(""%d%d""&m&n);
//
*****************分别用两个数组接收一下,来测试下吧
//**************
o=m;
o1=n;
//************第一次运行的时候发现是循环条件有了些问题

printf(""n***************n"");//p=array;p=Cool(m);array[0]=*p;printf(""************ %d *****""p);printf(""there are have %d 个""&array[0]);p++;//*************************************//下面的这个部分有问题了 for(i=0;i<array[0];i++p++){    printf(""%d ""p);//首先可以证明的一点是指针一定是连续的. ..我输出了下地址证明的确是连续的 } //*****************//****************下面这个要求的是最大公约数/*for(i=0;i<k;i++){    for(j=i;j<k1;j++)    {        if(array[i]==array1[j])        {            sum=sum*array[i];break;        }    }} //**************这个是最大公约数的结果 printf(""n*********n%d:""sum);MinSum=(o*o1)/sum;printf(""n*********n%d:""MinSum);//接下来 我要求最小公倍数了 */return 0;

}//我们只讨论指针的问题

解决方案

为什么地址一样的 *p++ 和 array[20]求解的结果却不同却不同?

解决方案二:
*p++每次++只会移动一个元素的距离(是int的话就是4)怎么会和array[20]地址一样?
代码略难懂,有两点:
1.打印地址可以用%p来打印
2.你返回了一个局部数组变量的地址

时间: 2024-08-19 06:55:47

为什么 地址是一样的 ,但是用指针指过去的时候所得的值 是不一样的.求大神解答的相关文章

c++-C++中以指针作为函数参数修改实参值得问题,求大神解答下!为什么老是提示修改内存地址值冲突

问题描述 C++中以指针作为函数参数修改实参值得问题,求大神解答下!为什么老是提示修改内存地址值冲突 #include using namespace std; void g(char* p) { int i=0; char* a=p; char* b="dcba"; for(i=0;i<4;i++) { *a=*b; a++; b++; } } void main() { char* x="abcd"; char* p=x; g(p); cout<&l

指针-求大神解答一下linux内核编译时键盘驱动模块出现了问题!新手求助!谢谢!

问题描述 求大神解答一下linux内核编译时键盘驱动模块出现了问题!新手求助!谢谢! 编译的时候,就出现了这几个错误,然后我就一直不能编译内核, 估计是指针的问题,但是我又不知道应该如何解决, 已经卡了我差不多两个星期了,一直都解决不了,跪求大神指点! 谢谢! 解决方案 在编译之前,有没有用#cp -f config_tq板的具体的名字 .config复制tq板的配置文件?

java-Java中多线程同步锁报无效指针异常是何原因,求大神解答!

问题描述 Java中多线程同步锁报无效指针异常是何原因,求大神解答! /* 需求: 使用lock接口实现商品的生产和销售的动态平衡 思路: 1.创建被共同操作的数据类Resource,并通过多态引用分别创建lock和condition子类对象以及资源的获取和赋值方法 2.创建两个相反操作即生产和销售的类同时实现Runnable接口,并覆盖run方法 3.在主函数中,创建资源对象,并作为共同参数分别传递给生产和销售两个线程实现类的构造函数 4.分别将生产和销售类的对象作为参数,传给两个线程,并各自

指针-opnet统计线的使用方式???求大神赐教

问题描述 opnet统计线的使用方式???求大神赐教 使用OPC_INTRPT_STAT 获取的是指针吗??统计线的使用方式???求大神赐教

关于c#调用c++ 带指针参数回调函数的问题,求大神帮忙

问题描述 C++函数原型:longSTDCALLIPCNET_StartRealData(longlLoginID,S_REALDATA_INFO*pRealDataInfo,CBRealDatafRealData,Void*pUserData=NULL)参数说明:lLoginIDlong登陆的ID,IPCNET_Login的返回值sRealDataInfoS_REALDATA_INFO*实时数据流的参数结构体fRealDataCBRealData码流数据回调函数,参见CBRealData回调函

c语言指针指向地址的问题 求大神详细解答

问题描述 c语言指针指向地址的问题 求大神详细解答 #include int main(int argc char const *argv[]){ int b=0x12345678;char *p4=(char *)&b;printf(""p=0x%hhxn""*p4 );printf(""p=0x%hhxn""*(p4+1) );char *p7=""helloworld"";

c语言-关于C语言结构体指针类型的强制转换(求大神详细解答)

问题描述 关于C语言结构体指针类型的强制转换(求大神详细解答) #include <iostream> #include <algorithm> using namespace std; typedef struct { string dna; int count; }DNA; DNA dna[101]; **int cmp(const void *a,const void *b) { DNA *aa = (DNA *)a; DNA *bb = (DNA *)b; return a

调试-求大神~~ c free()结构体指针出错

问题描述 求大神~~ c free()结构体指针出错 本人菜鸟一枚,调试程序时发现下面的程序只要用free()来释放结构体指针就出错,百思不得其解,望大师指正!非常感谢啦! 注:本人用的是VC6.0.自己写的C程序,私心揣测难道是结构体指针特殊一点,或者我释放的方式不对~ 补充:C-Free 5.0上选择mingw5调试则没有问题!到底哪里有问题? #include <stdio.h> #include <stdlib.h> #include <malloc.h> st

c++-数组的指针怎么访问数组中的元素求大神帮忙

问题描述 数组的指针怎么访问数组中的元素求大神帮忙 所有需要的文件均已包含 using arry=int[5]: arry* chen() [ Int j=0,i,a[5]: While(cin>>i) {if(j==5) Break: a[j]=i: ++j: } return &a: ] Int main() {Int (*b)[5]: b=chen(): for(int i=0:i<5:i++) cout<<(*b)[i]<<endl: } 解决方案