常量和指针|学习笔记

简介: 快速学习常量和指针

开发者学堂课程【你的第一门 C 语言课常量和指针】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/444/detail/5476


常量和指针


内容介绍:

一、常量

二、指向常量的指针

三、常量指针

四、指向“指向常量的常量指针”的指针


一、常量

  • 常量应该是这样:520,‘a’,3.14
  • 或者这样:

#define PRICE 520

#define A a’

#define PI 3.14

  • 还可以使用 const 关键字修饰:

- const int price = 520;

-const char a=’a’;

-const float pi = 3.14;

  • 举例

#include

int main()

{

const float pi =3.14;

printf(%f\n,pi)

pi=3.1415;

return 0;

}

运行:gcc test1.c ss ./a.out

结果报错:

test1. C In function main

test.c:9 error:assignment of read-only variable pi

  • 举例

#include

int main()

{

const float pi =3.14;

printf(%f\n,pi)

//pi=3.1415;

return 0;

}

运行:gcc test1.c ss ./a.out

结果:

3.140000

  • void 指针我们把它称之为通用指针,就是可以指向任意类型的数据。也就

说,任何类型的指针都可以赋值给 void 指针。

#include

int main( )

{

int num = 1024;

int *pi = &num ;

char *ps = "FishC" ;

void * pv;

pv = pi;

printf("pi:%p, pv:%p\n" ,pi, pv);

printf("pv:%d\n",*(int *)pv);

ps = (char *)pv;

pv = ps;

printf("ps:%p,pv:%p\n" ,ps, pv) ;

printf("*pv:%s\n",(char *) pv) ;

return 0 ;


二、指向常量的指针

  • 指针可以修改为指向不同的常量
  • 指针可以修改为指向不同的变量
  • 可以通过解引用来读取指针指向的数据
  • 不可以通过解引用修改指针指向的数据

举例:

#include

int main()

{

Int num=520;

const int chum =880 ;

const int *pc = &cnum ;

printf("cnum:%d,&cnum: %p\n", cnum, &cnum) ;

printf("*pc: %d, pc: %p\n*pc, pc);

pc=#

printf("num: %d, &num: %p\n ”num, &num) ;

printf("*pc: %d,pc: %p\n", *pc, pc);

num = 1024 ;

return 0 ;

}

运行:gcc test2.c ss ./a.out

结果结果:

cnum: 880, &cnum: 0xbf d030a4

*pc: 880, pc: 0xbfd030a4

num: 520, &num: 0xbfd030a8

*pc: 520,pc: 0xbfd030a8

[fishc@Locathost sle27]$ vi test2.c

[ fishc@LocaLhost s1e27]$ gcc test2.c && ./a. out

cnum: 880, &cnum: 0xbfe71c14

pc: 880 pc: 0xbfe71c14

num: 520, &num: 0xbfe71c18

*pc: 520, pc: 0xbfe71c18

*pc: 1024, pc: pxbfe71c18


三、常量指针

  • 指向非常量的常量指针
  • 指针自身不可以被修改
  • 指针指向的值可以被修改
  • 指向常量的常量指针
  • 指针自身不可以被修改
  • 指针指向的值也不可以被修改
  • 举例

#incLude .h>

int main( )

{

int num =520 ;

const int cnum = 880 ;

const int * const p = &num ;

*p =1024;

printf("*p: %d\n", *p);

return 0;

}

运行:gcc test2.c ss ./a.out

结果:*p:1024

 

四.指向“指向常量的常量指针”的指针

  • 举例

#include

int main()

{

int num =520 ;

const int cnum =880;

const int * const p = &num ;

const int * const *pp = &p ;

printf("pp: %p,&p: %p\n" ,pp, &p);

printf("*pp: %p, p: %p, &num: %p\n", *pp, p, &num) ;

printf("**pp: %d, *p: %d, num: %d\n", **pp, *p, num) ;

return 0 ;

}

运行:gcc test4.c ss ./a.out

结果

:pp:0xbfda9440&p :0xbfda9440

*pp:0xfda9444 ,p: 0xbfda9444, &num :0xbfda9444

**pp:520 ,*p: 520, num: 520

相关文章
|
9月前
引用的本质:指针常量
引用的本质:指针常量
39 0
|
1月前
|
存储 人工智能 算法
c++算法学习笔记 (9) 双指针
c++算法学习笔记 (9) 双指针
|
14天前
|
编译器 vr&ar C语言
C primer plus 学习笔记 第10章 数组和指针
C primer plus 学习笔记 第10章 数组和指针
|
1月前
|
编译器 C++
C/C++杂谈——指针常量、常量指针
C/C++杂谈——指针常量、常量指针
21 0
|
1月前
|
人工智能 C++
【重学C++】【指针】轻松理解常量指针和指针常量
【重学C++】【指针】轻松理解常量指针和指针常量
37 0
|
1月前
|
编译器 C语言 C++
深入探究C语言中的常量指针与野指针概念及其应用
深入探究C语言中的常量指针与野指针概念及其应用
31 1
|
11月前
|
C++
C++学习笔记_07 const、指针、引用 2021-04-19
C++学习笔记_07 const、指针、引用 2021-04-19
|
1月前
|
C++
面试题:常量指针和指针常量?
面试题:常量指针和指针常量?
25 0
|
1月前
|
编译器 C++
C++ 中 const 和 constexpr 关键字解析:常量、函数和指针
很多 C++ 的初学者看到 const 这个关键字的第一反应都是一头雾水,主要是因为 const可 以出现在很多的位置,以及后面加入的 constexpr 更是常常感到困惑,今天就为大家一一解释出现它们的含义和以及作用
121 0
|
存储 人工智能 C语言
C语言指针学习笔记
C语言指针学习笔记