欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

深入const int *p與int * const p的區(qū)別詳解(常量指針與指向常量的指針)

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

對于指針和常量,有以下三種形式都是正確的:

復(fù)制代碼 代碼如下:

const char * myPtr = &char_A;//指向常量的指針
char * const myPtr = &char_A;//常量的指針
const char * const myPtr = &char_A;//指向常量的常量指針

下面依次對這三種類型進(jìn)行介紹。
因?yàn)?操作符是左操作符,左操作符的優(yōu)先級是從右到左,對于
1.常量指針(Constant Pointers)
復(fù)制代碼 代碼如下:

int * const p

先看const再看* ,是p是一個(gè)常量類型的指針,不能修改這個(gè)指針的指向,但是這個(gè)指針?biāo)赶虻牡刂飞洗鎯Φ闹悼梢孕薷摹?BR>實(shí)例1:
復(fù)制代碼 代碼如下:

#include<iostream>
#include<stdlib.h>
using namespace std;
void main()
{
    int i1=30;
    int i2=40;
    int * const pi=&i1;//這里的pi指針式常量。
    //pi=&i2;     //注意這里,pi不能再這樣重新賦值了,即不能再指向另一個(gè)新地址。所以我已經(jīng)注釋了它。
    printf("%d\n", *pi ) ;   //輸出是30
    i1=80;     //5.想想看:這里能用*pi=80;來代替嗎?可以,這里可以通過*pi修改i1的值。
    printf("%d\n", *pi ) ;   //輸出是80
    system("pause");
}

實(shí)例2:
復(fù)制代碼 代碼如下:

char char_A = 'A';
char char_B = 'B';

char * const myPtr = &char_A;
myPtr = &char_B;    // error - can't change address of myPtr

2.指向常量的指針(Pointers to Constants)
復(fù)制代碼 代碼如下:

const int *p

先看*再看const,定義一個(gè)指針指向一個(gè)常量,不能通過指針來修改這個(gè)指針指向的值。
實(shí)例3:
復(fù)制代碼 代碼如下:

#include<iostream>
#include<stdlib.h>
using namespace std;
void main()
{
    int i1=30;
    int i2=40;
    const int * pi=&i1;
    printf("%d\n", *pi ) ;   //輸出是30
    pi=&i2;     //注意這里,pi可以在任意時(shí)候重新賦值一個(gè)新內(nèi)存地址
    i2=80;     //想想看:這里能用*pi=80;來代替嗎?當(dāng)然不能
    printf("%d\n", *pi ) ;   //輸出是80
    system("pause");
}

實(shí)例4
復(fù)制代碼 代碼如下:

char char_A = 'A';
const char * myPtr = &char_A;
*myPtr = 'J';    // error - can't change value of *myPtr

所以指針p所指向的整型數(shù)是一個(gè)常量,其值不能被修改。
3.指向常量的常量指針
對于“指向常量的常量指針”,就必須同時(shí)滿足上述1和2中的內(nèi)容,既不可以修改指針的值,也不可以修改指針指向的值。
4.引入字符數(shù)組和字符指針
字符數(shù)組和字符指針的定義如下:
復(fù)制代碼 代碼如下:

char a[] = "I Love You!"; //定義了一個(gè)字符數(shù)組
char *p = "I Love You!";  //定義了一個(gè)字符指針

可以將a理解為常量指針,而p為指向常量的指針,代碼實(shí)例如下:
復(fù)制代碼 代碼如下:

#include<iostream>
#include<stdlib.h>
using namespace std;
void main()
{
    char a[] = "I Love You!"; //定義了一個(gè)字符數(shù)組,數(shù)組名a是一個(gè)常量指針,指向的位置不變,都是數(shù)組第一個(gè)元素的位置
    char *p = "I Love You!";  //定義了一個(gè)字符指針,指針p指向一個(gè)字符串常量,這個(gè)字符串常量不能修改
    //*(p+1)='a';//錯(cuò)誤,不可以修改指針指向的值,所以這里注釋掉。
    a[1]='a';//常量指針,不能修改指針的值,但是可以修改指針?biāo)赶虻闹怠?BR>    //a=p;//錯(cuò)誤,a是常量指針,不可修改其值。
    cout<<a<<endl;
    cout<<p<<endl;
    cout<<a[1]<<endl;
    cout<<*(p+2)<<endl;
    system("pause");
}

輸出值為:
IaLove You!
I Love You!
a
L

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有