数组指针的使用方法

#include <stdio.h>

#include <string.h>

int main()

{

   char (*ptr)[4]=NULL;//声明了一个数组指针,指向的数组含有4个元素

   char *p;

   char s[4]="abc";

   p=s;

   ptr=&s;

   char t[4]="tui";

   //t[4]="tui";

   
   printf("首元素的地址&s[0]=%#x\n",&s[0]);  //首元素的地址&s[0]=0x62fe00

   printf("首元素的地址s=%#x\n",s); //首元素的地址s=0x62fe00

   printf("首元素的地址p=%#x\n",p);//首元素的地址p=0x62fe00

   printf("首元素的地址+1  p+1=%#x\n",p+1);//首元素的地址+1  p+1=0x62fe01  

   printf("数组的地址ptr=%#x\n",ptr);//数组的地址ptr=0x62fe00    

   printf("数组的地址+1   ptr+1=%#x\n",ptr+1);//数组的地址+1   ptr+1=0x62fe04



   printf("\n");

   printf("p:%s\n",p);p:abc



   printf("s:%s\n",s); s:abc



   printf("ptr:%s\n",ptr);ptr:abc



   printf("(*ptr):%s\n",*ptr);(*ptr):abc


   //输出b

   printf("\n");

   printf("%c\n",(*ptr)[1]);//这里的(*ptr)表示的是数组名,数组名存放的是数组首元素的地 址,            
                            //(*ptr)[1]表示第二个元素   b


   printf("(*ptr)=%#x\n",(*ptr)); //这里的(*ptr)表示的是数组名,(*ptr)[1]表示第二个元素

                                    //(*ptr)=0x62fe00

   return 0;

}
#include <stdio.h>

#include <string.h>

int main()

{

   char (*ptr)[4]=NULL;//声明了一个数组指针,指向的数组含有4个元素
   char *p;
   char s[][4]={"abc","frt","hhji"};
   ptr=s;

   
   printf("第一个%s\n",s[0]);
   printf("第2个%s\n",s[1]);
   printf("第3个%s\n",s[2]);
   printf("ptr:%s\n",ptr);
   printf("ptr:%s\n",ptr+1);
   printf("ptr:%s\n",s);
   
   
   printf("s=%#x\n",s);
   printf("ptr=%#x\n",ptr);
   printf("s[0]=%#x\n",s[0]);
   printf("&s[0][0]=%#x\n",&s[0][0]);
   printf("数组的地址ptr=%#x\n",ptr);//数组的地址ptr=0x62fe00 ???
   printf("数组的地址+1 ??ptr+1=%#x\n",ptr+1);//数组的地址+1 ??ptr+1=0x62fe04
   printf("s[1]=%#x\n",s[1]);
   return 0;
}

程序说明:

1、char t[4]="tui";使用数组定义字符串时,要在声明字符串的时候就直接定义字符串;

//t[4]="tui";这种定义字符串的方法是错误的。

2、数组指针是指针,指向的是整个数组。数组指针p加1,那么其p的值直接加上整个数组的长度。

3、数组首元素的地址与数组的地址是不同的概念,但是二者的值是相同的

4、不同变量形式的地址可能是相同的,但意义不同,使用时注意区分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值