首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C言中只读指针变量与只读变量指针

只读指针变量和只读变量指针看着好像有点绕; 只读指针变量:意思只读指针变量 只读变量指针:只读变量指针 本文的主角const关键字 如果我们开发的时候,定义了某个变量,不想让别人修改时,就可以使用...首先定义两个整型变量 int a = 10; int b = 20; 普通的指针变量 先来看一下普通的指针变量: 我们定义一个普通的int类型的变量a,并初始化为10; 定义一个int类型的指针变量...那么打印出来p的值,就是a的值,10; //普通的指针变量 int *p = &a; printf("%d \n",*p);//10 //指向数值222 *p...也可以修改指针变量的地址; 只读指针变量 //只读指针变量 //这是一个const指针指向的int类型的变量 //const指针指向的整型变量 int *const cp1 = &a; *cp1...= 2;//值可以修改 *cp1 = &b; //cp1 = &b; //指针不能修改 值可以修改; 地址不能修改; 只读变量指针 //一个const指针指向的一个const整型的变量

2.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C言中指针”和“指针变量”的区别是什么

    比较严格的说法这样的: 系统为每一个内存单元分配一个地址值,C/C++把这个地址值称为“指针”。如有int i=5;,存放变量i的内存单元的编号(地址)&i被称为指针。...“指针变量”则是存放前述“地址值”的变量,也可以表述为,“指针变量存放变量所占内存空间“首地址”的变量(因为一个变量通常要占用连续的多个字节空间)。...比如在int i=5;后有一句int *p=&i;,就把i的指针&i赋给了int *型指针变量p,也就是说p中存入着&i。所以说指针变量存放指针变量。...有一个事实值得注意,那就是有不少资料和教科书并没有如上区分,而是认为“指针指针变量的简称”,如对int *p=&i;的解释:声明一个int *型指针p,并用变量i的地址初始化;而严格说应该是声明一个...int *型指针变量p才对。

    60730

    C++定义指针变量 | 使用指针变量

    C++指针变量的定义 C++规定所有变量在使用前必须先定义,即指定其类型,在编译时按变量类型分配存储空间,对指针 变量必须将它定义为指针类型。...//定义整型变量 int i,j; //定义指针变量 int *point_num; 上述定义的指针变量point_num指向整型数据的指针变量,也就是说,指针变量pointer_num只能用来指向整型数据...定义指针变量的一般形式为 基类型 *指针变量名; 如下: int *point_num1; float * point_num2; char * point_num3; 指针变量pointer_num1...即*不是指针变量名的一部分,在定义变量时在变量名前加一个*表示该变量指针变量。 在C++中怎样使一个指针变量指向另一个变量呢?...C++定义指针变量 | 使用指针变量 更多案例可以go公众号:C语言入门到精通

    2.6K2420

    【说站】c言中指针变量的使用场景

    c言中指针变量的使用场景 1、作为函数参数的传输,已经在函数中通过指针传输我们需要的参数的地址。...数组一组数据的集合。 它不能一次性传输所有函数。我们可以通过指针将数组传输进去,然后操作数组。 使用指针作为函数返回值: c语言允许函数的返回值指针。我们称这个返回值为指针的函数为指针函数。...} void b() { printf("I am function b\n"); } int main() { void (*p)();//定义了一个函数指针变量,用于存储函数的入口地址 p=b;/.../函数指针的返回值一级入参要与函数保持一致 a(b);//传递一种行为 system("pause"); return 0; } 以上就是c言中指针变量的使用场景,希望对大家有所帮助。...更多C语言学习指路:C语言教程 本教程操作环境:windows7系统、C11版,DELL G3电脑。

    29740

    初识C语言——初识指针(什么内存,什么指针指针变量怎么用,指针的大小)

    C语言,有一种专门用来存储地址的变量,叫做指针变量。...指针变量的定义方法: 类型 * 指针变量名;(*说明该变量一个指针变量) 我们来演示一下: int num = 10; int *p;//p为一个整形指针变量 p = # 这样就把一个整型变量的地址放到了一个整型指针变量里边...("%c\n", ch); return 0; } 3.指针变量的大小 思考一个问题,整型变量的大小4个字节,char类型1个字节,double8个字节,那么指针变量的大小是多少?...为什么不同类型的指针变量大小一样的呢?又为什么4个字节呢? 原因指针用来存放地址的,所以指针变量的大小取决于地址的大小,而在同一平台上地址的大小固定不变的。...我们来验证一下: 在32位平台上: 4个字节 64位平台上: 8个字节 所以,我们得出结论: 指针变量的大小在同一平台固定的: 指针大小在32位平台4个字节,64位平台8

    25710

    7.1 什么指针指针变量

    一、指针是什么 解释:由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元,因此,将地址形象化地称为“指针” 二、指针变量 解释:一个变量的地址称为该变量的“指针”,如果有一个变量专门用来存放另一个变量的地址...,则称它为“”指针变量” 注意:指针变量的值地址 (1)定义指针变量 一般形式 类型名 *指针变量名 注意: ①指针变量前面的“*”表示该变量的类型为指针变量...②在定义指针变量时必须指定基类型 ③指针变量中只能存放地址,不要将一个整数赋给一个指针变量 例子: ?...(2)指针变量的引用 在引用指针变量时,可能有三种情况 ①给指针变量赋值 ②引用指针变量指向的变量 ③引用指针变量的值 例子: ?...注意:要熟练掌握两个有关的运算符 ① & 取地址运算符 ② * 指针运算符 (3)指针变量作函数参数 函数的参数不仅可以是整型、浮点型 、字符型等数据,还可以是指针类型。

    1K3029

    漫谈C变量——夏虫不可

    C言中,按照生命周期来分,变量只有两类:静态变量和动态变量。 其中,静态变量指,在编译时刻(Compiling-time)变量的地址和大小都已经确定下来的变量。...还有一类头顶上没有花括号,但是由static修饰的静态变量,我们称为“模块内全局变量”——它仅在当前.c文件内可以“全局”访问的。   ...其实,根据我们之前一篇关于指针的文章(《求求你,不要再纠结指针了……》,发送关键字“指针”进行阅读),我们知道,这种“语法上”的东西都是虚假的,骗小孩的,具体就不再赘述。...理论上说,局部变量只在程序进入变量所在的花括号范围内时才从栈(stack)中进行分配,一旦程序出了花括号,它的声明就结束了——夏虫不可冰说的就是局部变量那可怜的一生…… 看着新近分配的局部变量,静态局部变量深深的吸了一口烟...(C++、Java、C#原生态支持),而是开发人员通过程序逻辑所构造出的特殊变量类型。

    2.1K20

    C言中指针详解

    什么指针 C言中指针一种数据类型,指针存放数据的内存单元地址。...C语言规定,变量地址只能通过取地址运算符获得,即“&”,其运算对象是变量或数组元素名,运算结果对应变量或数组元素的地址。...需要注意的,虽然地址一个整数,但是C言中不允许把整数看成“地址常量”,所以此处的“地址型表达式”不能整数。 2. 使用指针变量 格式:指针变量名 需要使用地址时,可以直接引用指针变量名。...='\0';string++){ printf("%c",*string); // I love China }; return 0; } C言中,字符串按字符数组进行处理的...形参为指针变量、实参为数组名; 4. 形参为数组名、实参为指针变量 C言中,函数可以返回整型、实型、字符型数据,也可以返回指针类型数据,即返回一个地址。

    2.4K20

    C言中“野指针”、“悬空指针”是什么?

    1、“野指针”(wild pointer) “野指针”(wild pointer):没有被初始化过的指针,所以不确定指针具体指向。...例如以下示例代码: void *p; // 此时 p “野指针” 因为“野指针”可能指向任意内存段,因此它可能会损坏正常的数据,也有可能引发其他未知错误。...在实际的C语言程序开发中,定义指针时,一般都要尽量避免“野指针”的出现,可通过赋初值方式解决: void *p = NULL; void *data = malloc(size); 2、“悬空指针”(dangling...pointer) “悬空指针”(dangling pointer):指针最初指向的内存已经被释放了的一种指针。...例如以下示例代码: void *p = malloc(size); assert(p); free(p); // 现在 p “悬空指针C言中的“悬空指针”会引发不可预知的错误,而且这种错误一旦发生

    1.6K50

    C言中的迷途指针

    有这样一小段代码,如: int *p=(int *)malloc(sizeof(int)); free(p); 这一段代码,程序会在堆中分配一个整形长度的内存,比如这段内存的首地址1000,那么指针变量...p的值为1000,当调用函数free释放这段内存时,指针变量p的值任然1000,虽然这段内存已被释放,但这段内存中任然可能包含原值,但此生指针p已指向的不是一个有效的对象,因为这段内存可能会被重新利用...,里面的数据也是不确定的,由于大部分运行时系统不会阻止对后续的访问与修改,所以如果我们试图解引一个已释放的指针,其行为未定义的,那么将可能引起很多问题,如:如果再次访问这段内存,其行为不可预期的、潜在的安全隐患...,行为不可预期的,虽然你向这段内存中写入了数据,但是这段内存已被释放,这段内存可以重新被利用,所以虽然写入了10,但可能会被其他利用这段内存程序改变,因此行为不可逾期。...小编给大家推荐一个学习氛围超好的地方,C/C++交流企鹅裙:870963251!适合在校大学生,小白,想转行,想通过这个找工作的加入。

    99840

    C:指针学习-指针变量—学习笔记

    * pc = &ch;//取出ch的地址放到ch里 *pc = 'l'; return 0; } pc为字符指针变量指针变量变量,存放的字符,类型char* 关于字符指针变量还有另外一种用法...() { char arr[] = "JonlyMay"; printf("%c\n", arr[2]); printf("%c\n", "JonlyMay"[2]); return 0; }...(pc)字符指针变量一种变量,里面存放的(&ch)字符指针 (地址) char ch; char* pc = &ch; (pn)整型指针变量一种变量,里面存放的(&n)整型指针(地址)...来举一个稍微有点难度的例子来帮助我们更好的掌握数组指针变量类型 胡言乱:写到这突然想到一个很有意思的两句话,你已经学会加减乘除了,来,写道高数题练练手。 哈哈哈哈哈哈哈哈哈。...所以数组指针变量p的类型就是int*(*)[9] 不知道大家是否还记得在这篇C:指针和数组之间的关系-学习笔记-CSDN博客文章中关于&arr+1后跳过了40个字节 相信到这里应该能够理解为什么跳过

    7510

    8.2 C语言指针变量

    01怎么定义指针变量 1、一般形式 类型名 *指针变量名; 例子:int *point_1,*point_2; 左端的int在定义指针变量时必须指定的“基类型”。...3、一个变量指针的含义包括两个两个方面,一是以存储单元编号表示的地址,一它指向的存储单元的数据类型(如int,char,float等)。...02怎样引用指针变量 1、给指针变量赋值。如:p=&a;指针变量p的值变量a的地址,p指向a。 2、引用指针变量指向的变量。...如:printf(“%o”,p);作用是以八进制形式输出指针变量p的值,如果p指向了a,就是输出了a的地址,即&a。 4、&取地址运算符。&a变量a的地址。...C语言 | 函数实现输出I love you 更多案例可以go公众号:C语言入门到精通

    1.3K2625

    谈谈C言中变量

    变量 变量的单词variable,它的形容词的意思可变的,易变的。...在C言中,每个变量都有特定的类型,而类型又决定了变量存储的大小和布局,类型范围内的值都可以存储在内存中,运算符可应用于变量上。...C 语言还允许定义各种其他类型的变量,例如:枚举、指针、数组、结构、共用体等。 变量的命名规则 C言中变量的命名可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。...大写字母和小写字母不同的,因为 C 语言对字母的大小写敏感的。...例子: int i,j,k; int _Max; int Happy2021; C 中的变量定义 在C言中变量定义就是告诉编译器我要创建变量的存储,及怎么创建变量的存储。

    2.6K10

    C语言|图解指针变量

    = NULL; 图解: 1.1 己址和己空间 指针变量也是一个变量,对应一块内存空间,对应一个内存地址,指针名就是己址。...1.2 己值、他址、他空间 指针变量的值就是其指向的空间的地址,指向的地址的空间大小就是指针变量指向类型的大小。...1.3 声明与初始化 当声明一个指针变量,没有初始化时,指针变量只获得了其自身的内存空间,而其指向还没有确定,此时指针变量解引用做左值是非法操作。...#include #include int g(int **iptr) { // 当试图修改主调函数的一级指针变量时,被调函数的参数一个二级指针 if...a,偏移sizeof(int)个字节 *(b+3) = 'x'; // b+3指相对于地址b,偏移sizeof(char)个字节 printf("%d, %c\n",a[3],b

    1.6K20

    C言中指针的说明

    什么指针?...C语言当中,指针就是我们寻找想要的房间的一种手段。...指针变量和地址 上面那一段话,已经让我们初步理解了指针 我们可以看一下这一段代码 其中 0x0115F95C   0x0115F95D   0x0115F95E   0x0115F95F这4个字节代表着...指针变量的大小(在VS2022中) 分别为x86以及x64环境下面 我们可以看到指针变量的大小在统一环境下面他们的大小相同的 结论: • 32位平台下地址32个bit位,指针变量⼤⼩4个字节 •...64位平台下地址64个bit位,指针变量⼤⼩8个字节 X64环境输出结果 • 注意指针变量的⼤⼩和类型⽆关的,只要指针类型的变量,在相同的平台下,⼤⼩都是相同的。

    7810

    详解C言中的数组指针指针数组

    ·详解数组指针指针数组 ·数组指针 一、区分 首先我们需要了解什么数组指针以及什么指针数组,如下图: int *p[5]; int (*p)[5]; 数组指针的意思即为通过指针引用数组,p先和*结合...,说明了p一个指针变量,指向一个大小为5的数组。...二、数组元素的指针 1.定义 指针变量既然可以指向变量,同样的,也能指向数组元素,因此,数组元素的指针就是数组元素的地址。...二、指向指针数据的指针 首先我们可以定义一个指向指针数据的指针变量: char **p; 为了方便我们理解,其实**p也就等于*(*p)。...*p表示p为一个指针变量,前面的*表示*p指向的char *类型的数据。换一句话来说,如果引用*p,就是得到p所指向的值,如果拿上面的例子来说就是字符串”Hello”和”World”。

    2.9K20

    C语言之指针变量

    , 例如 指针变量int类型, 那么将来就只能保存int类型变量的地址 3、* : 标示这是一个指针变量,代表访问指针变量指向的那一块存储空间 4、指针变量只能存储地址...a4常量指针,指向整型的常量指针,即指针常量 //(可以间接修改指向变量的值,但是不可重新赋值新变量地址) const int * const a5; //a5指向整型常量的常量指针(...既不能间接修改变量的值,也不可重新赋值新变量地址) 总结:1、const关键字写在数据类型的前面和后面等效关系;   2、指向常量的指针:不能间接修改所指向变量的值,但是可以给指针重新赋值新地址   ...b, &b, bp, *bp); //修改后b=50, b地址: 5fbff64c, bp保存的地址:5fbff64c, *bp: 88 /* 这个地方有点奇怪,b常量,指针变量...bp指向b, 间接通过指针bp修改变量的值, 但是最后打印结果:*bp的值变了,b的值没有变(b常量,指针变量bp指向b), 而且bp保存的地址和b的地址还是保持一样 这究竟是为啥

    2.1K30
    领券