首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
sizeof数组名和sizeof int*、
2024-09-06
别混淆了sizeof(数组名)和sizeof(指针)
我们在挨个儿输出一个数组中的元素时,最常用的就是用一个for循环来实现,简单了事.比如类似下面的代码片段: for(i = 0; i< length; i++) { printf("数组元素是%d", 数组[i]); } 用一个下标索引变量i来遍历整个数组,length是数组的长度.当然了,length得提前计算出来,计算的方式有很多,很多朋友会想到用sizeof计算.不过,sizeof好归好,但是也要睁大你的双眼,小心用错,你若不信,请继续往下看. 先看传统的做法,代码如下:
sizeof(数组名)和sizeof(指针)
在做这道题时: 32位环境下,int *p=new int[10];请问sizeof(p)的值为()A.4 B.10 C.40 D.8 我以为正确答案为C,int类型为32位,占四个字节,10个自然就是40了,结果正确答案为A,只是指针p占的空间. 因此写段代码测试一下: #include<iostream> using namespace std; void fun(int P[])//P这里作为指针使用 { c
sizeof数组名和字符指针是有区别的
sizeof数组名和字符指针是有区别的. #include <stdio.h> #include <stdlib.h> void change(char url[]); int main(int argc,char* argv[]) { char* src="/its.php22222"; printf("length:%d\n",sizeof(src)); ]="zhanghanqing"; printf("l
sizeof(数组名) 与 数组长度
int a[] = {1, 2, 3, 4}; cout << sizeof(a); //16 char b[] = "abc"; cout << sizeof(b); //4 cout <<strlen(b); //3 char c[] = {'1', '2', '3'}; cout << sizeof(c); //3 cout << strlen(c); //3 当数组作为函数参数传递当时候, 表示的是指针, 用sizeo
sizeof +数组名
链接:https://www.nowcoder.com/questionTerminal/daa5422cb468473c9e6e75cc98b771de 来源:牛客网 sizeof一个数组名称的时候是计算的变量所具有的实际的字节数!! 当你在函数A中定义一个数组(比如,char str[15];),然后在该函数A中直接使用sizeof(str),那么输出结果肯定是15:但是当你把这个数组当成参数传递给另一个函数B(假如 函数B为void funB(char newstr[]),在函数B中,再次
比较分析与数组相关的sizeof和strlen
首先,我们要清楚sizeof是C/C++中的一个操作符,其作用就是返回一个对象或者类型所占的内存字节数. 而,strlen是一个函数,函数原型为: size_t strlen(const char *string); strlen函数的作用是:计算给定字符串的长度,不包括'\0'在内 // 数组形如: ,,,,}; char name[]="abcdef"; 无论是整型数组还是字符数组,数组名作为右值的时候都代表数组首元素的首地址. 数组发生降级(数组名退化为数组首元素的地址)的情况:
数组名的含义.xml
pre{ line-height:1; color:#1e1e1e; background-color:#f0f0f0; font-size:16px;}.sysFunc{color:#627cf6;font-style:italic;font-weight:bold;} .selfFuc{color:#800080;} .bool{color:#d2576f;} .condition{color:#000080;font-weight:bold;} .key{color:#000080;} .
C语言——数组名、取数组首地址的区别(一)
目录: 1. 开篇 2. 论数组名array.&array的区别 3. array.&array的区别表现在什么地方 4. 讨论 5. 参考 1.开篇 很多博客和贴吧都有讨论这个话题,各有自己的表述方式,今天在他们的基础上我将继续试着以我自己理解的方式总结一下,欢迎大家的审阅和指评. 2.论数组名array.&array的区别——省政府和市政府的区别 例如: int array[5] = {0}; 总所周知,其中的&array是整个数组array的首地址,array是数组首
数组名和数组名取地址&
在C中, 在几乎所有使用数组的表达式中,数组名的值是个指针常量,也就是数组第一个元素的地址. 它的类型取决于数组元素的类型: 如果它们是int类型,那么数组名的类型就是“指向int的常量指针“. 在以下两种场合下,数组名并不是用指针常量来表示, 就是当数组名作为sizeof操作符和 单目操作符&的操作数时. sizeof返回整个数组的长度,而不是指向数组的指针的长度. 取一个数组名的地址所产生的是一个指向数组的指针,而不是一个指向某个指针常量的指针.所以&
C/C++——C语言数组名与指针
版权声明:原创文章,转载请注明出处. 1. 一维数组名与指针 对于一维数组来说,数组名就是指向该数组首地址的指针,对于: ]; array就是该数组的首地址,如果我们想定义一个指向该数组的指针,我们可以用如下定义: int *p; 然后令: p = array; 那么指针p就指向了数组array的首地址,此时我们可以向操作array一样操作p: #include <stdio.h> int main(){ ]= {,,,,,,,,,}; int *p = array; ;i<;i++){
放弃"指针常量"这种不严谨的中文描述!深度理解数组名、指针常量
ques1: 数组名完全等价于指针常量吗? int array[10] = { 10,11,12,13,14,15 }; printf("sizeof(array)= %d \n", sizeof(array)); char* const str_2 = "QQQQQQQQQQQQQQ"; printf("sizeof(str_2)= %ld \n", sizeof(str_2)); // 此实验说明虽然数组名的实现 和 指针常量(例如char*
[skill] C语言数组名到底是个啥
1. 正常情况下,数组名是个地址常量. 2. sizeof(数组名)的时候,数组名就代表数字名,其类型为 type array[], 返回数组元素个数. 3. 除了2的情况以外,可以理解为一个指针常量 !? 参考: http://www.cnblogs.com/kalo1111/p/3285955.html http://c.biancheng.net/cpp/html/492.html
【C语言】数组名传递给函数,数组的sizeof变为4的原因
C语言中,数组名作为参数传递给函数时,退化为指针,sizeof对指针操作结果应该是4.例子如下: #include<iostream> using namespace std; void Swap_arr(char* charArr){ int len = sizeof(charArr); cout << "len =" << len << endl; //输出len =4 } int main(){ char charArr[] = &
别人不会给你说的---C语言中数组名和指针的区别 及 sizeof用法
引自: http://blog.csdn.net/tianyue168/article/details/5781924 #i nclude <iostream.h> int main( int argc, char * argv[]) { char str[10]; char *pStr = str; cout << sizeof (str) << endl; cout << sizeof (pStr) << endl; retur
数组类型与sizeof与指针的引用
以char类型为例: char a[100]; //a类型为char[100] &a类型为 char (*)[100] *a类型为char char *p = a; //p类型为 char*, *p类型为char. 也可以写成char *p = &a; 类型char[100]和char (*)[100]可隐式到char*转化,指向第一个元素的地址.不包含隐式转换的写法应该:char *p = &a[0]; 而它们的区别: 再看 #include &l
sizeof 数组名字,数组指针
int *a = new int[15]; sizeof(a)//在64位机器上,8 sizeof(a)/sizeof(int) //2 ----- int a[15]; sizeof(a)//15*4=60 sizeof(a)/sizeof(int)=15 -----所以数组名并与完全等同于指针; 注意 数组名字 在参数传递的过程中,会退化为指针,这也是为什么指针作为参数传递,需要一个长度参数. sizeof(数组名字)//是返回数组占用的内存大小 sizeof(指向数组的指针)//返回的是指
【C++基础】sizeof 数组 指针 空NULL
笔试遇到很多sizeof的小题,博主基础堪忧,怒总结如下,还是要巩固基础啊啊啊! sizeof操作符 对象所占 栈内存空间的大小,单位是字节 关键词:char 数组 指针 结构体 class [注意] ① sizeof(NULL) 结果为1, "\n"转义字符算作1位 ② 是栈内存的大小,不是堆,也不是静态全局区 class A1{ public: int a; static int b; //静态变量存放在全局数据区域 A1(); ~A1(); }; void main(){ co
sizeof(数组)
这里就不讨论一般的数组长度计算了,只说明一下任何数据到了函数的形参中都将退化为指针,所以计算大小的时候,也是计算的指针的大小 直接上代码了 // class sizeof测试.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using namespace std; int f1(int num[]) { return sizeof(num); } ]) { return sizeof(num);
sizeof 数组与指针
在学习指针的时候,得到指针的定义和数组的定义一样,但是这时候就很好奇,指针只是一个地址,那数组和指针一样的话,sizeof时怎么得知其长度呢. 于是百度了下面的回复: 千万不要把数组名看成指针,尽管有些时候他们是相通的,但也仅限某些时候而已. sizeof是一个奇特的函数,告诉你你也许不相信——sizeof在编译的时候就已经确定sizeof的结果了,这有点类似于宏. char str[] = “Hello” ; sizeof ( str );//输出为6 编译器编译的时候根据上下文完全知道str
C语言的数组名和对数组名取地址
http://blog.csdn.net/zdcsky123/article/details/6517811 相信不少的C语言初学者都知道,数组名相当于指针,指向数组的首地址,而函数名相当于函数指针,指向函数的入口地址.现在又这样一个问题,如果对数组名取地址,那得到的会是什么呢?很多人立刻会想到:给指针取地址,就是指针的指针,既二级指针嘛!当然这样的结论是错误的,不然这篇笔记也就没有意义了. 下面我们来逐步分析,下面是一段验证这个问题的代码 #include <stdio.h> ]={,,,,
热门专题
xgboost 特征重要性
Android HID通讯延迟
whatweb 在win10安装
mysql的登录方式
echarts 更新数据 getOption
telnet Move文件HTTP文件
MFC中将char*转换为cstring值为空
ControlsSelectTool作用
android 获取副卡sim卡信息
android 全屏红色呼吸灯动画
Qt中如何实时ping某个ip
mobaxterm gbk 不生效
OPNET14.5卸载
valgrind 写入日志
简述LabVIEW循环结构中隧道、自动索引和移位寄存器的区别
C#自定义特性权限控制
redhat6.5 epel源
vue 生成二维码 icon
uniclound云开发 怎么添加多个查询参数
shell for批量更改文件名