先决条件:指针
当char, const, *, p都用在不同的排列中时, 含义会根据放置在何处而变化, 这会引起很多混乱。下一篇文章重点介绍所有这些的区别和用法。
预选赛const可以应用于任何变量的声明以指定其值不会更改。 const关键字适用于左侧的任何内容。如果左侧没有任何内容, 则适用于右侧的任何内容。
const char * ptr:
这是指向常量字符的指针。
你不能更改ptr所指向的值, 但是可以更改指针本身。 ”
const char *”
是指向const char的(非const)指针。
//C program to illustrate
//char const *p
#include<
stdio.h>
#include<
stdlib.h>
int main()
{
char a = 'A' , b = 'B' ;
const char *ptr = &
a;
//*ptr = b;
illegal statement (assignment of read-only location *ptr)//ptr can be changed
printf ( "value pointed to by ptr: %c\n" , *ptr);
ptr = &
b;
printf ( "value pointed to by ptr: %c\n" , *ptr);
}
输出如下:
value pointed to by ptr:A
value pointed to by ptr:B
注意:两者之间没有区别const char * p和char const * p因为两者都是指向const char的指针, 并且’ *'(asterik)的位置也相同。
char * const ptr:这是指向非恒定字符的恒定指针。你不能更改指针p, 但可以更改ptr指向的值。
//C program to illustrate
//char* const p
#include<
stdio.h>
#include<
stdlib.h>
int main()
{
char a = 'A' , b = 'B' ;
char * const ptr = &
a;
printf ( "Value pointed to by ptr: %c\n" , *ptr);
printf ( "Address ptr is pointing to: %d\n\n" , ptr);
//ptr = &
b;
illegal statement (assignment of read-only variable ptr)//changing the value at the address ptr is pointing to
*ptr = b;
printf ( "Value pointed to by ptr: %c\n" , *ptr);
printf ( "Address ptr is pointing to: %d\n" , ptr);
}
【const char *p,char *const p和const char * const p之间的区别】输出如下:
Value pointed to by ptr: A
Address ptr is pointing to: -1443150762Value pointed to by ptr: B
Address ptr is pointing to: -1443150762
注意:指针始终指向相同的地址, 仅更改该位置的值。
const char * const ptr:这是指向常量字符的常量指针。你既不能更改ptr所指向的值, 也不能更改指针ptr。
//C program to illustrate
//const char * const ptr
#include<
stdio.h>
#include<
stdlib.h>
int main()
{
char a = 'A' , b = 'B' ;
const char * const ptr = &
a;
printf ( "Value pointed to by ptr: %c\n" , *ptr);
printf ( "Address ptr is pointing to: %d\n\n" , ptr);
//ptr = &
b;
illegal statement (assignment of read-only variable ptr)
//*ptr = b;
illegal statement (assignment of read-only location *ptr)}
输出如下:
Value pointed to by ptr: A
Address ptr is pointing to: -255095482
注意:char const * const ptr与… 相同const char * const ptr.
const关键字测验
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
推荐阅读
- C结构和C++结构之间有什么区别()
- CALL和JUMP指令之间有什么区别()
- Golang中var关键字和短声明运算符之间的区别
- C#中var和dynamic之间有什么区别()
- C#中系统级别异常和应用程序级别异常之间的区别
- 在kubernetes中使用nfs-provisioner动态存储卷
- Spring认证指南(了解如何使用 Spring 执行表单验证)
- #yyds干货盘点# SAP UI5 batch 请求的响应解析流程分析
- 精简指令集计算机