和指针相关的两个特殊运算符,和相关的等价表达式

和指针相关的两个特殊运算符:

一、"&" 取地址运算符,通过&运算符可以取出普通变量的地址;

二、"*"  有两种意义:

1.  为指针标志: 是否为指针标志主要看前面是否有类型,此处有一个int

2.  为指针运算符:

     在等号右面为取值。*可以取出指针变量所指向的普通变量的值。

     在等号左面为赋值。*可以将指针变量所指向的普通变量的值,修改为其他。

3.  为乘法运算符。当且仅当左右的都为变量时。略。

int a, b =20, c=30, d=40, *p;
(正确,此处的*为指针标志,只起到定义的左右,没有取值和赋值的作用。是否为指针标志主要看前面是否有类型,此处最前面有一个int)

p=&d; (正确,p指向d的地址)

a=*p;  (正确,此处的*为取值。最后结果a的值变为了d的值40)

*p =c; (正确,此处的*为赋值。最后结果d的值变为了C的值30)

*p =&b; (运行错误,左边为内容值,右边为地址,不等价)

----------------------------

等价表达式

若指针变量p指向变量a,即将变量a的地址赋给了指针变量p.

如:int a=20, *p=&a;

则有如下结果:

A、*p <=> a

B、 p <=> &a

C、 &*p <=> &a <=> p

D、*&a <=> *p <=> a

E、 (*p)++  a++

(*p)--  a--

++(*p)  ++a   ++*p

--(*p)  --a   --*p

时间: 2024-10-05 18:06:27

和指针相关的两个特殊运算符,和相关的等价表达式的相关文章

函数与指针参数——关于两道题目的个人理解

题目1,下面的代码的输出结果是什么 1 #include<stdio.h> 2 3 void get(char *p) 4 { 5 p="hello!"; 6 } 7 8 int main(int argc, char const *argv[]) 9 { 10 char *str=NULL; 11 str = get(); 12 13 printf("%s\n",str); 14 15 return 0; 16 } 读者也可以自己思考一下答案是多少,当

编程题:指向函数的指针,求两个数中较大的数。

#include<stdio.h> int max(x,y) { int z; if(x>y)  z=x; else  z=y; return z; } void main() { int a,b,c; int (*p)(); p=max; scanf("%d,%d",&a,&b); c=(*p)(a,b); printf("%d,%d,max is %d\n",a,b,c); } 编程题:指向函数的指针,求两个数中较大的数.,布布

以指针和引用两种参数实现删除单链表L中所有值为X的结点的函数

下面是单链表的数据结构 typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*Linklist; 1.以指针参数实现 void delete_x_1(LNode *head,ElemType x){//head为单链表头结点,删除结点的值为x LNode *l = head; LNode *p = head->next; while(p != null){ if(p->data == x){ l->next =

????用指针判断是否两个数组是否有相同的数字,有的话输出相同数字

/* *Copyright(c) 2014 烟台大学计算机学院 *All rights reserved. * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:杨汉宁 * 完成日期:2014年 12 月 11 日 * 版 本 号:v1.0 * * 问题描述:用指针判断是否两个数组是否有相同的数字,有的话输出相同数字 * 输入描述:两个数组的值 * 程序输出:NULL OR 它们相同的值 */ #

《挑战30天C++入门极限》c++中指针学习的两个绝好例子

    c/c++中指针学习的两个绝好例子 对于众多人提出的c/c++中指针难学的问题做个总结: 指针学习不好关键是概念不清造成的,说的简单点就是书没有认真看,指针的学习犹如人在学习饶口令不多看多学多练是不行的,下面是两个很经典的例子,很多书上都有,对于学习的重点在于理解*x和x的理解,他们并不相同,*x所表示的其实就是变量a本身,x表示的是变量a在内存中的地址,如果想明白可以输出观察cout<<*x"|"x;,当定义了int *x;后对x=&a的理解的问题.仔细阅

栈的两个应用:括号匹配的检验和表达式求值

1.     括号匹配的检验 假设表达式中含有3种括号:(),[],{},其嵌套的顺序随意.检验括号是否匹配. 基本思想:在算法中设置一个栈,每读入一个括号,若是右括号,则或者与栈顶匹配的左括号相互消解,或者是不合法的情况:若是左括号,则直接压入栈中.若括号匹配,在算法的开始和结束时,栈都应该是空的. 代码: /* * 判断表达式中的括号是否匹配,匹配输出Yes,否则输出No * {(zhang)+[lei]+{lei}={zhangleilei}} -> Yes * {(zhang)+[lei

指针、链表的原理和各类操作相关心得以及学生信息管理系统

伴随着学期末的到来,C语言程序设计这门课也接近尾声.经过前两次的教学,我们对C语言也有了深刻的了解,学习的内容也不断的加深.这次我们就学习了C语言程序设计里应用最广泛,也是最难学习的知识--链表和指针的应用. 关于指针和链表这两个的应用和上次的管理系统有着直接的关系,没有添加链表和指针的管理系统无法做到精确的查找.数据存储方面也显得不方便.所以指针和链表的作用能够直接指向你所需要的数据地址,使程序更加完善.这次我就利用指针的应用制作了一个管理员工工资等信息的程序. §1 指向结构体变量的指针变量

C语言:通过函数指针来完成两个数的加减乘除(函数指针当做参数使用)

// //  main.c //  Function_pointer // //  Created by mac on 15/8/2. //  Copyright (c) 2015年 bjsxt. All rights reserved. //  要求:将函数指针做参数来求两个整数的和.差.积.商. //知识点:函数指针就是一个指向函数的指针,通过指针指向要调用的函数来完成操作.其实,这个指针就是指向函数的入口地址. //切记:要被调用的函数必须和函数指针的声明的一样(包括:返回值类型.参数个数

C语言:通过函数指针来完成两个数的加减乘除

// //  main.c //  Function_pointer // //  Created by mac on 15/8/2. //  Copyright (c) 2015年 bjsxt. All rights reserved. //  要求:通过函数指针求两个整数的和.差.积.商. //知识点:函数指针就是一个指向函数的指针,通过指针指向要调用的函数来完成操作. //切记:要被调用的函数必须和函数指针的声明的一样(包括:返回值类型.参数个数和类型) #include <stdio.h