栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言基础(5)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言基础(5)

指针

*p表示获取p所表示的地址的单元内容的值
&q表示获取q的地址
例如:
i→1;&i→0x2000;p→0x2000;&p→0x3000;*p→1;q→0x3000;&q→0x4000;*q→0x2000;**q→1;
直接访问:i;一级间接访问:p;二级间接访问:q
指针的大小是根据平台而确定的值。
指针变量与所指向的值一定要是相同类型。
指针要有明确指向,否则会变成野指针,不知道指针应指向哪块空间时,应定义为空指针。
void *p 空类型指针,不确定数据类型时使用,可以匹配任意数据类型。

数组与指针的区别:

a是数组名表示地址常量,p是指针,表示的是变量,a++不能执行,因为是常量,p++可以执行,因为是变量。
a[i]:a[i] = (a+i)=(p+i)=p[i]
&a[i]:&a[i]=a+i=p+i=&p[i]
使用指针也能声明数组,int *p = (int [3]){1,2,3}

二维数组与二级指针的不同:

二级指针存放一级指针的地址,而二维数组的数组名并不是指针,只是单纯的数组首地址,对任何维度的数组,数组名永远都是数组的首地址。

数组指针与指针数组:

数组指针:【存储类型】 数据类型 (*指针名)【下标】= 值
在某种数组大小下移动的指针 int (*p)[3]=a 数组指针的使用与数组名类似,但是数组指针为变量。
指针数组:【存储类型】 数据类型 * 数组名【下标】
在某个数组中存放多个指针。

用指针数组对人名进行选择排序:
static void name(void)
{
	int i,j,k;
    char *name[5] = {"ana","marry","john","kandy","cindrela"};
    char *tmp = NULL;//未知指向的指针要声明为空指针
    for(i = 0;i<4;i++)
    {
        k = i;
        for(j = i+1;j<5;j++)
        {
            if(strcmp(name[k],name[j])>0)
            k = j;
        }
        if(k != i)
        {
            tmp = name[i];
            name[i] = name[k];
            name[k] = tmp;
        }
    }
    for(i = 0;i<5;i++)
        puts(name[i]);
	return;
}
字符指针和字符数组的区别:

字符数组是给字符串分配了一段空间用来存放字符串,可以改变其中的内容;字符指针则是指向某字符串常量的地址,不能改变其中的内容,只能通过改变指针的指向来改变内容。

常量const:

常量指针表示指针的指向可以变化,而指针指向的地址内容不可以发生改变。
指针常量表示指针的指向不可以发生改变,但指针指向的内容可以改变。
const只是不能通过const修饰的变量名进行改变,并不代表这块空间不可以变化

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942957.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号