C语言关于指针的一个问题

#include<stdio.h>
main(){
int a[]={2,4,6,8},*p=a,i;
for(i=0;i<4;i++)
a[i]=*p++;
printf("%d\n",a[2]);
}
求解析

第1个回答  2018-03-16
#include<stdio.h>
main()
{
    int a[]={2,4,6,8},*p=a,i;    // 变量声明和初始化   (指针p 等价于 数组a)
    
    //遍历数组a
    for(i=0;i<4;i++)
        a[i] = *p++;        // 根据p++ 采用的是先取值后计算的方式(*p = a[i]),
                            // 该赋值等价于 a[i] = a[i]  (p++ 同步i++)
        
    printf("%d\n",a[2]);    // a[2] = 6
}

第2个回答  2018-03-16
*p++ 先取值,也就是*p
然后自加的是p, 而不是*p
这里 p初始为a。 也就是循环中, 依次做的都是自己给自己赋值。a中值不变。
所以最终打印a[2]还是初始值, 6本回答被提问者和网友采纳
第3个回答  2018-03-16
这个循环等于没有执行(它相当于把整个数组的每一个元素,自己复制到自己)
最后输出的是:
6

C语言指针的一个问题
(1) 第一个框里的代码 short* temp = *p1; 等价于下面的两条语句:short* temp;temp = *p1;所以,后面 p2=temp;和上面是一致的, 没错.(2)第二个框里的代码 没错, 指针就一个该指向指针, 但是你这里赋值一个值.这种做法是错误的, 不过对C语言来说, "错的"的意思是"不能保证正确", ...

关于C语言指针的一个问题?
这里&p的地址是不会变的,不是打印不出来是没到打印那个语句程序已经崩溃退出了。图中1处指针p没有初始化,它没有指向任何内存单元不能进行图中2处的赋值写入操作,这里会程序崩溃退出。

c语言问题,关于指针的问题
一、比如我们定义一个int型指针变量。int *p=NULL;初值为空。那么当执行while(p);时,只有p==NULL时,while循环才会结束。所以如果我们写while(p);printf。。。;那么只有当p为空时,后面的printf才会执行。否则就一直循环,这样我们就能判断p为空了。同理!p,自然就能判断p不为空了。二、p...

关于C语言结构体指针的一个疑问?
出现此问题的原因在于链表创建create函数有问题,问题定位在图中红色框内。此处每个节点使用的是局部变量,函数结束后,局部堆栈虽然内容不会清除,但内存会被回收,如果其它地方也使用堆栈可能会分给它用,内存内容就会改变。正确的方式是申请堆内存。使用malloc函数,同时包含头文件#include<stdlib.h>。框内...

C语言关于指针的一题。
{ int a[]={2,4,6},*prt=&a[0],x=8,y,z; \/*定义整形数组a,把2、4、6依次存入数组a的前三个地址 中,定义一个整形指针prt,并把数组a中首地址的值赋值给 prt指向的地址中*\/ for(y=0;y<3;y++)z=(*(prt+y)<x)?*(prt+y):x; \/\/把prt指向的值与x进行比较,把小的...

C语言指针问题。
(1) ++(*pointer)是先取值,再自增,当前pointer指向的是位置arr[3],取值后是2,*pointer的结果是2,2再自增,当然会得出3。值得说明的是,这个括号是可以省略的,此处括号只起到增加程序可读性的作用。(2)*(pointer-2)是先移动指针,再取值。pointer-2是把指针从当前位置arr[3]回退两...

C语言指针问题
一、如有定义char y[4]= "321"则表达式 *y+2的值是'5' 。分析:y是字符串数组首元素'3'的地址,*y的值就是字符'3',再加上2,就是字符'5'(也可以说是字符'5'的ASC码值)。二、 如有定义char z[2][4]={"MAT", "LAB"};,则表达式*(*z+2)的值是 'T'。分析:z是二维字符...

关于c语言指针的一些问题。
1、不是说系统64位它就是8字节,而是受限于地址总线的字节宽度,你的地址总线是64位的即指针就是8字节的,但是现在的64位个人pc多半是x86-64能兼容32位的应用程序。2、有,你64 位的机器,它的虚拟内存可以到8TB,如果你在64位机上装个32位的windows你会发现,我的个去……慢的要死(我犯过...

初学C语言对C指针的疑惑
1、C的变量都有四个基本属性:名称、类型、地址、内容,类型决定变量在内存占据的空间的大小和内容的存储形式。指针是一种以内存地址作为内容的变量,若定义了一个指针变量,它和其他变量一样具有自己的名称,存储地址和记录的内容,指针数据类型的变量与其他数据类型的变量在存储上的区别就是不论是什么...

c语言指针的赋值问题
在C语言中,指针的赋值是通过将变量的地址赋给指针变量来实现的。指针的基本概念 在C语言中,指针是一个变量,其特殊之处在于它存储的是其他变量的地址,而不是值本身。指针使我们能够间接地访问和修改变量的值。指针的赋值过程 当我们为指针变量赋值时,实际上是将其指向一个变量的内存地址赋给它。这...

相似回答