C语言中, 有些时候数值名并不与指针等价.
如数组char a[] = "bcd";
数组名a 就是指向数组a[]的第1个元素a[0]的地址
所以*a==a[0]=='b'
当我们定义1个新的指针p,并给它赋值时:
p=a;
一般来讲我们认为他们p与a是等价的
因为同样有: *p==p[0]='b'
p[i]=a[i]
但是有特殊情况, 要将数组名a看成1个特殊的指针.
例如函数sizeof , 这是取1个对象(变量or常量) 的内存占用空间
举个例子:
定个1个字符数组c:
char c[]="abcdefghikjlmn";
那么sizeof(c) 得出的是数组c的所占内存空间,也就是c所有元素占的长度(包括最后的隐藏元素'\000').
所以
sizeof(c) == 15 //因为c是字符数组, 每1个字符占的长度是1字节(byte)啦
跟着定义1个指针p,并赋值:
p=c;
而size(p) 是求p本身所占的内存空间, 也就是1个内存单位
sizeof(p) == 8 // 64位gcc, 32位gcc是4, 因为对于每1个内存单位来讲,64位的内存单位长度是32位的一倍.
那么数组c 是不是容易都是特殊指针呢. 不是, 当他作为1个参数被传入时, 系统会将这个参数转为一般化指针:
例如我定义1个新函数:
long int getlen(char* a){
return sizeof(a);
}
执行 getlen(c) 时, 实际是也会执行size(c), 但是因为这时数组名c作为参数已经被转为一般的函数, 所以getlen函数里面的sizeof(c)求的是c指针本身所占的内存空间, 也就是8啦.
见如下例子:
输出:
C语言中, 有些时候数值名并不与指针等价.相关推荐
- c语言中5l是数值或字符常量,C语言练习题-选择题(带答案)
以下为<C语言练习题-选择题(带答案)>的无排版文字预览,完整格式请下载 下载前请仔细阅读文字预览以及下方图片预览.图片预览是什么样的,下载的文档就是什么样的. C语言练习题-选择题(带答 ...
- c语言中5l是数值或字符常量,C语言中什么叫做正确的数值或字符常量?
用一对单引号将一个字符括起表示合法的字符常量.例如'a'.数值包括整型.浮点型.整型可用十进制,八进制,十六进制.八进制前面要加0,后面由0到7八个数表示. 在C语言中,字符常量有以下特点: 字符常量 ...
- 关于java和c语言中,变量重名问题
请看下面的两段代码: #include <iostream> #include <cstdio> #include <cstring> using namespac ...
- C语言中的sizeof中的数组和指针
1.引子 今日在看动态规划的0-1背包问题,看完后还是打算自己写着试试,毕竟实践才能出真知嘛.动态规划的结果是个二维数组dp,我copy书上的例子进行初始 memset(dp,0,sizeof(dp) ...
- C语言中void cpy,关于C/C++ void指针,使用void指针拷贝int 数组
在C/C++中void代表的就是无类型或者为空,作为void *p这样的定义则说明这个指针 只包含了指针位置而不包含指针的类型,一般的指针包含2个属性指针位置和类型, 其中类型就能判断出其长度. 借用 ...
- C语言中int占几个字节,指针占几个字节,由什么决定呢?
int占几个字节 今天心血来潮,想要了解一下C语言中各整型占用几个字节. 先上代码测试两个环境: #include<stdio.h> #include<stdlib.h>int ...
- c语言中val是什么函数,val(val是什么意思)
有这么一个C语言程序 : int i; long val; for(i=0;i 在C语言中Val是一个将由数字符号(包括正负号.小数点)组成的字符型数据转换成相应的数值型数据的函数,语法格式是Val( ...
- c语言中 调用函数除函数名外,【单选题】在 C 语言中 , 调用函数除函数名外 , 还必须有 ( ). (10.0分)
A. 函数预说明 B. 实际参数 C. ( ) D. 函数返回值...
[单选题]在 C 语言中 , 调用函数除函数名外 , 还必须有 ( ). (10.0分) A. 函数预说明 B. 实际参数 C. ( ) D. 函数返回值 更多相关问题 下列关于IMOECDIS性能标 ...
- 在python语言中可作为源文件后缀名的是_在Python语言中,可以作为源文件后缀名的是( )_学小易找答案...
[多选题]在2013清单计价中,其他项目界面,包括( ) [多选题]在分部分项工程清单下,添加一项定额的方法有( ) [单选题]下列各项中,关于企业无法查明原因的现金溢余,经批准后应贷记的会计科目是( ...
最新文章
- 某内存池中的指针用法
- 有没有记录程序运行中所有的函数调用堆栈的工具?
- 第五周项目一-三角形类雏形(1)
- 自己对Delphi中使用正则表达式的研究心得
- of type std::bad_cast: std::bad_cast
- codevs 1004 四子连棋 BFS、hash判重
- 东莞电子计算机学校,东莞市电子科技学校
- vs2010 rdlc 报表及报表控件
- Linux C高级编程——网络编程之API(5)
- 一年月份大小月口诀_怀胎十月,为啥我只能算出9个月?
- 【registry】registry合并带spring boot项目第一弹
- oracle 11g 卸载 客户端卸载
- js table多层嵌套_只会console.log?8个高效调试js的console方法
- thinkphp中的__DIR__ __ROOT__ __APP__ __MODULE__ APP_PATH LIB_PATH MODULE_PATH 等是在哪里定义的?...
- Windows 系统(包含Server) 官方镜像下载--阿里云盘
- 解决mac系统大小写切换异常问题
- 一元二次方程的简单解法
- 中医五行学说详细资料
- 详谈parameterType与resultType的用法
- 【荐藏】代谢组学分析系列
热门文章
- MySQL—视图(二)
- python:将32位的16进制数据以二进制/hex/binary的形式写入到文件
- [gic]-linux和optee的中断处理流程举例(gicv3举例)
- KPROCESS 结构体属性介绍
- 2020-11-7( servlet)
- 【网络安全】简要分析下Chrome-V8-Issue-762874
- BFS求无权图的单源最短路径-邻接矩阵存储
- C. Kefa and Park【树的遍历】
- 2.3.3 进程互斥的硬件实现方法
- 手机数控模拟器安卓版_车床模拟器2手机版下载-车床模拟器2游戏 v2.5.0安卓版_5577安卓网...