常量和指针|学习笔记

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

开发者学堂课程【你的第一门 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

相关文章
引用的本质:指针常量
引用的本质:指针常量
59 0
|
13天前
|
安全 程序员 C语言
【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针
在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。本文将深入探讨这两个概念,包括定义、语法、实际应用、复杂示例、最佳实践以及常见问题。
38 7
|
3月前
|
存储 Go
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
|
4月前
|
存储 C++
c++学习笔记06 指针
C++指针的详细学习笔记06,涵盖了指针的定义、使用、内存占用、空指针和野指针的概念,以及指针与数组、函数的关系和使用技巧。
36 0
|
7月前
|
存储 人工智能 算法
c++算法学习笔记 (9) 双指针
c++算法学习笔记 (9) 双指针
|
6月前
|
编译器 vr&ar C语言
C primer plus 学习笔记 第10章 数组和指针
C primer plus 学习笔记 第10章 数组和指针
|
7月前
|
编译器 C++
C/C++杂谈——指针常量、常量指针
C/C++杂谈——指针常量、常量指针
55 0
|
7月前
|
人工智能 C++
【重学C++】【指针】轻松理解常量指针和指针常量
【重学C++】【指针】轻松理解常量指针和指针常量
133 0
|
7月前
|
编译器 C语言 C++
深入探究C语言中的常量指针与野指针概念及其应用
深入探究C语言中的常量指针与野指针概念及其应用
67 1
C++学习笔记_07 const、指针、引用 2021-04-19
C++学习笔记_07 const、指针、引用 2021-04-19