首页 > 其他分享 >那些年被误解的指针和数组

那些年被误解的指针和数组

时间:2022-11-12 10:01:01浏览次数:36  
标签:误解 左值 数组名 数组 指针 赋值

误解1: &运算符返回一个地址

解释:   &叫做取址运算符,运算的结果是返回一个指向某个数据类型对象的指针。

    int a=1; int *p = &a;   

    &a不是地址,&a是指向a的指针,不是把地址给指针变量p,而是把指针直接赋值给变量p

 

误解2: 数组和指针一样

解释:  数组是一种数据结构,包含了一些同一类型数据的组合内存空间,指针是指向某一个数据类型的地址,之所以误解是因为数组作为右值表达式时会转账为指向首元素的指针

 

误解3:  数组名是常指针,所以不可赋值

解释:   数组名是数组的标识符,代表的数组,跟指针没关系。之所以不能赋值,因为数组是不可修改的左值。误解为指针因为数组作为右值表达式时会转账为指向首元素的指针

 

误解4:数组名是不是左值,所以不可以赋值

解释: 上面就说了,数组名是数组的标识符,之所以不能赋值,因为数组是不可修改的左值,左值包含了可修改左值和不可修改左值。

 

误解5:&数组名 是指针的指针

解释: 数组作为左值时不会转换为首元素的指针,代表的本来的意思:数组。&和sizeof都需要一个左值表达式的操作数,这个时候数组名代表的是数组,&数组名是指向该数组的指针,结果是一个右值表达式。

 

标签:误解,左值,数组名,数组,指针,赋值
From: https://www.cnblogs.com/fuyun2000/p/16882754.html

相关文章

  • mac git远程仓库错误解决方法
    mac更新后不知道怎么回事,git时出现了Permissiondenied(publickey).经查询后得出原因1、首先给git进行config的配置gitconfig--globaluser.name你的用户名gi......
  • C++二维数组最大值
    C++二维数组最大值【问题描述】求二维整型数组的"最大点"。二维数组的"最大点"定义为:某个数是所在行的最大值,并且是所在列的最大值。注意:某行或某列上可能有多个"最大点"......
  • C温故补缺(七):函数指针与回调函数
    函数指针与回调函数函数指针就是指向函数调用栈地址的指针,定义时须和函数的返回值类型,参数类型相同如:#include<stdio.h>intmax(intx,inty){returnx>y?x:y;......
  • 子数组、子序列,子串、子序列,子段的简单区别
    关系图表数组中的子数组、子序列,子段以及字符串的子串、子序列解释类型名称连续性数组子数组连续子段连续子序列不一定连续字符串子串连续子......
  • Go 语言机制之栈与指针
    原文作者:WilliamKennedy四哥水平有限,如有翻译或理解错误,烦请帮忙指出,感谢!原文如下:序言这个系列包含四篇文章,主要讲解Go言语指针、栈、堆、逃逸分析和值/指针语义背后的机......
  • js中foreach嵌套遍历两个数组并输出新的数组
    <script>letarrA=['1','2','3','4','5']letarrB=['2020-10-1','2020-10-2','2020-10-3']letarrC=[]arrA.forEach(item1=>{arrB.forEach......
  • 数组中出现次数超过一半的数字
      import java.util.*;public class Solution {    public int MoreThanHalfNum_Solution(int [] array) {        //遍历数组,值标记位key......
  • 指针(待续……)
    int*p;定义了指针变量p,这个变量储存了一个地址,这个地址对应的变量是int类型的。&是取地址符,int*p=&x;就定义了一个指向x的指针。指向相同类型变量的指针之间可以相互赋......
  • 数组基础(day11)
    笔者曾学过一阵labview,在labview中,首先创建空的数组框,随后将int整型,或str字符串型变量放入数组框内,就实现了数组的生成。1.字符串型数组labview与c的逻辑很相似。但在c语言......
  • javascript基础算法之数组元素两两相加等于某个固定值,并得出它们的对数
      letarr=[1,2,6,6,7,8,11,12,13,4,4]letnum=12functionsolution(arr,target){console.log('给出指定数组--->',arr)console.log('给出指定数......