C++指针学习第一天-创新互联

1.对指针概念的理解

我们提供的服务有:成都网站设计、成都做网站、微信公众号开发、网站优化、网站认证、巴楚ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的巴楚网站制作公司

  1.1 指针本身可以看成一个变量,于是变量类型现在有:整型变量 a;浮点型变量float b;指针型变量 *c.

指针的表示中,类型名 *指针 变量名,eg: int *a; char *p;

这个指针变量存储的是一个地址,因此*p 可以将其存储的地址上的东西表示出来;逆运算是取地址,将一个东西的地址算出来给指针p,这就是赋初值的过程。因为p手上拿着目标的地址,形象地看就像牵着遛狗的绳子,所以叫它指针。(本身没有什么特别的)

1.2 指针在定义的时候最好要赋初值,且特殊点在于,是将目标变量的地址赋给它,像下面这样。

int a = 5;
char *p = &a;

此时正在定义阶段,所以*表示的不是地址的内容,而表示p是一个指针变量,规范性要求。

  1.3 指针之间交换地址,例如char *p; char*q;直接p = q;即可

2. 指针与数组的关系

  2.1 可否这样理解:一个数组的首地址就是指针。在赋值的时候,可以不需要*,像同类一样,数组ch直接将它的头部交给指针变量s,往后假如想要访问第2个字母,可以ch[1],也可以s[1],也可以*(s+1)。当然也有不同,ch是数组,所占的空间是一段连续的;而指针s只占一个类型的空间。

char *s;
    char ch[15]={"adskja saha"};
    cin.getline(ch,15);
    s = ch;

  2.2 在函数中传递的形式

如果是数组的话,它的传递的格式大概像下面这样:

void hanshu(int arr[]);

int main()
{
    int array[]= {0,1,2,3};
    hanshu(array);
}

形参带个[ ],实际参数就是数组的名字;

类比下来,指针的传递格式可以是这样的:

void hanshu(char *p)

int main()
{
    char *p;
    int a;
    hanshu(&a);
    hanshu(p);
}

形参定义一个指针,然后实际参数就是一个地址。

3.指针和字符串

  字符串可以有两种表示:字符数组和字符指针,和前面数组似乎是一个回事。需要注意的是,字符串作为参数传递只需传递首字母,因为结束有'\0'作为标记。、

PS:若定义了指针变量s,并且把它和一个字符串的首地址挂钩,对字符串的每个字母的访问可以*s,然后下一个就直接s++,到*s==0的时候结束。

例子:统计一个字符串中单词的个数。

函数部分:

//函数部分
int counnt(char *s)
{
    int cnt = 0;
    while(*s!='\0')
    {
        while(*s==' ') s++;
        if(*s!='\0')
        {
            cnt++;
            while(*s!=' '&&*s!='\0')
                s++;
        }
    }
    return cnt;
}
 //函数:用字符指针传递首地址;
 //         向下扫描,while(*s不是'\0')
 //         当遇到空格,++s,空转不计数;
 //         如果空格后面不是'\0',则遇到了字母;
 //         当遇到字母,空转结束,cnt++;
 //         当仍然有字母,且不是'\0',空转不计数。
 //         如果遇到空格,空转结束,进入下一个循环;
 //

定义和调用部分:

char *s;
    char ch[15];;
    cin.getline(ch,15);
    s = ch;
    cout<

结果:

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前名称:C++指针学习第一天-创新互联
文章网址:http://myzitong.com/article/didsho.html