码迷,mamicode.com
首页 > 编程语言 > 详细

数组与指针(一)

时间:2015-09-23 20:48:47      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

数组名同时也是该数组首元素的地址: 比如 name=&name[0]

对于 字符串的输入,可以用数组来写

int main()

{
  char name[40];
  scanf("%s",name);
  printf("%s",name);
                                                                                
}

 

#define SIZE 4  
int main()  
{  
  short datas[SIZE];  
  shortshort *pti;  
    
  short index;  
    
  double bills[SIZE];  
  doubledouble *ptf;  
    
   pti=datas;  
   ptf=bills;  
   printf("%23s %10s","short","double\n");  
   for(index=0;index<SIZE;index++)  
        printf("pointers+%d: %10p %10p \n",  
        index, pti+index,ptf+index);  
        return 0;  
                                                                                               
}  

 

技术分享

前面已经讲过 short  2字节   double 8字节

3D25-05C35-3=22-C=2-12 = (16+2-12) = 6 (由于2-12不够减,所以向前借1 即16)D-5=(13-1-5) = 7(13-1是因为2-12不够而被借走了一位)3-0=3结果为:3762H

 

这里   dates+2=&dates[2];    相同的地址

     *(dates+2)==dates[2];      相同的值

      *dates+2      ;  这个自我理解一下,其实 对于数组而言,是不是指向数组的指针,其实数组名跟指针变量名,是等价的,所以这里可以用dates来代替 pti ,来代码验证一下:    看了网上的,数组名其实也是指针,但是还是有区别的,数组名是指针常量,pti  ptf指针是 指针变量 技术分享

技术分享

 

从上图可以看出,int 地址 相差 4个字节 ,4*8 也就是 32位 。  12ff70-12ff6c= 4  ,那么指针是什么呢?

指针也就是存放的 是 地址 0x0012ff6c ;

#include<stdio.h>  
int main()  
{  
    int i=5;  
    int* pi;  
    pi=&i;  
  
        printf("%d\n",i);  
    printf("%d\n",&i);  
        printf("%d\n",pi);  
     
                                                                                               
}

技术分享

 

所以说 申明指针变量,这个变量的值也就是 存储变量i的内存地址,相当于门牌号码。

 

转载:

#include<stdio.h>
int main()
{
 char i,*pi;
 i=10;
 pi=&i;     //算初始化吧,应该
 *pi=20;
 printf("%d",i);
                                                                            
}运行结果: i=20
也就是说直接通过指针进行了操作。改变了变量i的值。

 

数组与指针(一)

标签:

原文地址:http://www.cnblogs.com/shengruxiahua/p/4833236.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!