我是靠谱客的博主 单薄铅笔,最近开发中收集的这篇文章主要介绍指针总结(—),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1:指针常量
    *100=25  (假设100是a的地址,如果你想把a的值改成25,使用*100=25是否可以?)  
      答案:这样做是错误的,字面值100的类型是整形,而解引用操纵只能对指针类型进行操作,所有应该成   *(int *100)=25;
2:指针变量p
a:指针变量p里面存储的任何数据都被当作地址处理。
b:指针变量的大小和*前面的数据类型无关。
c:*前面的数据类型只能说明指针指向变量的数据类型。
d:声明不需要分配空间,而定义需要,所以:
   int a[100];和int a[];作为声明没有什么区别
f:定义为指针,声明为数组:
add.c
<pre name="code" class="html"><span style="color:#330000;">char *a="abcdef";</span>


 
 test.c   
 
#include <stdio.h>

extern char a[];
extern print();

int main()
{
                print();
                printf( "%pn", a);
                printf( "%sn", a);
                printf( "%sn", *(char **)a);
                printf( "%sn", (char *)*(int *)a);
                return 0;
}
  3:数组指针和指针数组
  int *p1[10]    //数组指针

数组指针:*p1[10];
根据运算符优先级的关系,下标运算符的优先级高于*运算符,所以数组名p1先和【10】结合,表示数组的大小为10个元素的大小,随后p1[10]在于int *结合,表示数组中元素的类型为指向整形的指针类型。

int   (*p2)[10];  // 指向数组的指针
指针数组:int  (*p2)[10];
理解:表示的是一个能指向10个整型元素的数组的指针,注意是指针,而不是数组
那怎样对指针数组进行引用呢:
  int   arr[10];
  int   (*parr)[10]=&arr;
下来我们来看这样两行代码:
                 int *arr[10];    //    数组指针
                 int(*parr)[10]=arr;    //指向数组的指针

我们想通过数组指针对指向数组的指针进行引用,于是传递给指针数组一个数组名arr,但编译器发出以下警告:
 
warning C4047: “初始化”:“int (*)[10]”与“int **”的间接级别不同
     
原因是:arr是指针数组arr[10]的首地址,而arr[10]中元素的类型都是int *类型,所以arr的类型就为int **,所以编译器发出了警告。
如要正确引用:需把整个数组的地址传递给指针数组,而不是首地址,并且要把指针数组的类型强制转化为(int *)类型,因为数组指针arr中,元素的类型为int *型。


总结:初学小白,如有描述不当之处欢迎指出!!!

最后

以上就是单薄铅笔为你收集整理的指针总结(—)的全部内容,希望文章能够帮你解决指针总结(—)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部