- 浏览: 136014 次
- 性别:
- 来自: 上海
最新评论
-
dylan.wu:
重命名后,比如浏览器的下载路径为“下载”,会自动变为新的文件夹 ...
Ubuntu下把默认目录名改成英文 -
narwhal:
直接在文件夹上右键,选择重命名就可以了!
Ubuntu下把默认目录名改成英文
最近在面试中被问到了几个有关sizeof的问题,自我感觉都回答对了,不过回来实际编写代码试了一下,发现还是错了一个地方,于是总结了一下。 对于栈中的数组,sizeof给出的会是实际的数组长度,而非指针长度。
栈中的数组
#include <string.h>
#include <stdio.h>
int main() {
char a[5]= "blue";
char b[ ] = "blue";
char c[6] = "blue";
printf("sizeof(a): %d\n", sizeof(a));
printf("sizeof(b): %d\n", sizeof(b));
printf("sizeof(c): %d\n", sizeof(c));
return 0;
}
程序结果
sizeof(a): 5
sizeof(b): 5
sizeof(c): 6
指向数组的指针
当是一个指向数组(堆中,栈中或数据区的数组)的指针变量时,sizeof的结果将会是一个指针变量的长度,比如在32位机下将会是4.
#include <string.h> #include <stdio.h> #include <stdlib.h> int main() { char ca[ ] = "blue1"; char *a = "blue1"; char *b = (char *)malloc(6 * sizeof(char)); char *c = ca; strcpy("blue1", b); printf("sizeof(a): %d\n", sizeof(a)); printf("sizeof(b): %d\n", sizeof(b)); printf("sizeof(c): %c\n", sizeof(c)); free(b); return 0; }
程序结果
sizeof(a): 4sizeof(b): 4
sizeof(c): 4
全局变量
对于全局变量中数组,sizeof的处理结果和在栈中的数组一样,会输出其实际的数组长度,而非一个指针变量的长度。对于全局变量中的指向数组的指针sizeof的处理方式为返回一个指针变量的长度。
#include <string.h> #include <stdio.h> char a[5]= "blue"; char b[ ] = "blue"; char c[6] = "blue"; char *d = "blue"; char *e = a; int main() { printf("sizeof(a): %d\n", sizeof(a)); printf("sizeof(b): %d\n", sizeof(b)); printf("sizeof(c): %d\n", sizeof(c)); printf("sizeof(d): %d\n", sizeof(d)); printf("sizeof(e): %d\n", sizeof(e)); return 0; }
程序结果
sizeof(a): 5
sizeof(b): 5
sizeof(c): 6
sizeof(d): 4
sizeof(e): 4
sizeof(b): 5
sizeof(c): 6
sizeof(d): 4
sizeof(e): 4
函数参数
对于函数参数,无论是写成数组形式还是指针形式,sizeof都只会返回一个指针变量的长度。
#include <stdio.h> void printsize1(char argv[]) { printf("%d\n", sizeof(argv)); } void printsize2(char *argv) { printf("%d\n", sizeof(argv)); } int main() { char a[] = "blue1"; char *b = "blue1"; printf("printsize1(a): "); printsize1(a); printf("printsize2(a): "); printsize2(a); printf("printsize1(b): "); printsize1(b); printf("printsize2(b): "); printsize2(b); return 0; }
程序结果
printsize1(a): 4
printsize2(a): 4
printsize1(b): 4
printsize2(b): 4
printsize2(a): 4
printsize1(b): 4
printsize2(b): 4
发表评论
-
Shell使用getopts读取参数
2012-01-12 17:22 998使用getopts可以处理 <command> ... -
shell函数的局部变量,全局变量。
2011-12-31 11:00 25651在shell脚本中定义函数时,曾被局部变量,全局变量搞的头昏脑 ... -
shell下list的使用
2011-12-20 17:26 137071、定义 list1=(a b c) 2、获取item个数: ... -
查看目录或文件大小
2011-12-20 17:10 1360可以使用“ls”来查看一个目录下各个文件的大小,但是无法查看文 ... -
在shell脚本运行时如何获取自己所在的目录
2011-12-01 15:55 5525在shell脚本中有时需要用到相对路径,来减少子程序的路径配置 ... -
shell中读取ini配置。
2011-11-28 19:45 5514利用awk 的范围模板来读取ini中的配置 范围模板匹 ... -
shell中$*和$@的区别
2011-11-04 16:01 978如果想用一个shell脚本把输入参数完整的传给另一个脚本,特别 ... -
linux Shell命令行输入的一些实用快捷键
2011-10-28 14:07 1414下面是一些shell的常用 ... -
用shell简单的获取多个文件的字段个数和
2011-10-28 12:41 2323有时候会遇到如下情况,现有几个文件,每个文件的每条记录都含有通 ... -
shell脚本获取后台子进程的退出状态
2011-09-21 21:02 6394(echo aaa >> /dev/null ... -
理解MySQL——并行数据库与分区(Partition)
2011-08-01 14:51 33811、并行数据库 1.1 ... -
Crontab实例
2011-07-29 21:38 752cron是一个linux下的定时执行工具,可以在无需人 ... -
python链接mysql
2011-06-30 09:31 894使用python的时间不久,这几天接到一个小需求,本来想着在l ... -
创建型模式
2011-05-01 23:11 631先来看一个《设计模式 ... -
在GAE下搭建GAppProxy
2011-04-28 23:50 536我们都想走到外面看看,奈何没机会真的走出去,那么就通过现在流行 ... -
Emacs使用命令
2011-04-27 09:26 661复制/粘贴 在要被复制的块开始处,按Ctrl-Space(由 ... -
ubuntu 自动加载硬盘
2011-04-20 10:44 861如果希望每次系统启动都能自动挂载硬盘,则还需要修改“/e ... -
进程与线程回顾
2011-04-18 00:58 803现代操作系统使用分时 ... -
Linux实用命令汇总(持续更新...)
2011-03-02 09:22 949经常会为某个简单的命令名google,baidu,于是觉 ... -
使用Emacs+Cedet+Cscope阅读c/c++代码
2011-02-13 14:41 5013Ubuntu 11.04下安装Emacs和Cscope 1、 ...
相关推荐
在C/C++编程领域,面试题常常...这些知识点展示了C/C++语言的基本特性,包括变量比较、常量定义、数组与指针的异同、面向对象的多态性以及程序控制结构等。在面试中,理解并熟练运用这些概念对于展示编程技能至关重要。
这个问题是关于C/C++语言中数组和指针的概念。这里有六个变量:str1、str2、str3、str4、str5、str6。其中str1、str2、str3、str4是数组,str5、str6是指针。问题是关于这六个变量的比较结果。 根据C/C++语言的规则...
在C/C++语言中,数组的下标范围是从0到n-1,其中n是数组的长度。当数组的下标超过了这个范围时,会导致数组越界问题。例如,在给定的代码中,数组A的下标范围是从0到MAX-1,当i循环到MAX时,A[255]=255;这句代码本身...
本文旨在深入探讨C/C++中的两大核心概念——数组与指针,并澄清常见的误区。指针是C/C++编程语言的重要组成部分,它允许程序员直接操作内存地址,从而实现高效且灵活的程序设计。然而,由于其复杂性和与传统思维模式...
在C/C++编程语言中,指针是一种非常重要的数据类型,它提供了直接访问内存地址的能力。数组名与指针之间存在着密切的关系,但它们并非完全相同。在很多情况下,数组名的行为类似于指向数组第一个元素的指针,这种...
在C/C++语言中实现二分法检索查找,需要对编程基础有良好的理解,包括数组操作、条件判断和循环控制。 首先,我们要明确二分法查找的前提条件:待查数组必须是有序的(升序或降序)。在C/C++中,一个简单的二分法...
### C/C++语言中指针的奥秘 #### 指针的概念 在C/C++编程语言中,指针是一个非常重要的概念。简单来说,指针是一个特殊的变量,它的值代表的是另一个变量(对象)在内存中的地址。理解指针需要从四个方面入手:...
在C或C++语言中实现贪食蛇,可以深入理解这两种语言的基础知识,特别是结构体、指针以及游戏循环等核心概念。下面将详细阐述这些知识点。 1. **结构体(Struct)**:在C/C++中,结构体是一种复合数据类型,它允许...
C++小知识:C/C++中不要按值传递数组是一篇关于C++编程语言的重要知识点,介绍了在C/C++中不要按值传递数组的原因和解决方法。 在C/C++中,数组不能按值传递给函数。当你试图这样做时,是数组的指针(第一个元素的...
C/C++语言是计算机编程的基础,特别适合...理解数组的概念和操作方式对于掌握C/C++语言至关重要,也是进一步学习高级数据结构和算法的基础。通过本教程,初学者能够掌握数组的基本用法,为进一步学习编程打下坚实基础。
extern "C"声明用于告诉C++编译器该函数是用C语言编译的,而不是C++语言编译的。这是因为C++编译器可能会将函数名进行名称 mangling,而extern "C"声明可以防止这种情况。 五、内存的思考题 1. void GetMemory...
相比之下,Java等其他编程语言可以直接通过函数返回数组,但在C/C++中,我们通常采用两种方法来实现这一功能。 #### 方法一:返回指向数组的指针 第一种常见的方法是通过返回一个指向数组的指针。这种方法的核心...
在C/C++编程语言中,解决这个问题通常需要对数组操作、循环、条件判断以及动态规划等基础知识有深入理解。 首先,我们需要了解什么是子数组和子序列。子数组是从原数组中连续取出的部分元素构成的新数组,而子序列...
在C/C++编程中,获取数组长度是一个常见的需求,但需要注意的是,这两种语言并没有内置的函数可以直接获取数组的长度。通常,我们可以通过两种方式来获取数组的元素个数,即计算数组占用的内存大小除以单个元素的...
C、C++语言是IT行业的主流编程语言,也是很多程序员必备的软件基本功,是软件开发行业招聘考查的重点。本书以流行的面试题讲解为主要内容,介绍了C、C++语言基本概念,包括保留字、字符串、指针和引用、结构体、...
2. **华为笔试面试题**:华为作为全球知名的科技公司,其笔试和面试题通常涵盖C/C++语言的基本语法、数据结构、算法、操作系统原理等内容,旨在考察候选人的编程基础和解决问题的能力。 3. **嵌入式开发**:嵌入式...
在C/C++面试和笔试中,常常会遇到各种各样的问题,这有助于考察应聘者对这两种编程语言的理解和掌握程度。下面将针对题目中的几个关键知识点进行深入解析: 1. **字符串比较**: - `str1` 和 `str2` 是字符数组,...
在C和C++编程语言中,处理二维数组时经常需要进行动态分配和释放内存。这是因为静态分配的数组大小在编译时就已经确定,而实际应用中往往需要根据运行时的具体情况进行灵活调整。本文将详细介绍在C/C++中动态分配和...
在编程学习的道路上,C/C++语言以其高效、灵活的特点深受广大程序员喜爱,而构建一个简单的信息管理系统则是学习过程中常见且实用的项目。本篇文章将深入探讨如何利用C/C++语言设计并实现一个学生信息管理系统,旨在...
根据给定的文件标题、描述、标签以及部分内容,我们可以从中提炼出多个与C/C++编程相关的知识点,这些知识点不仅对于准备参加腾讯等大型科技公司笔试的求职者来说至关重要,也是深入理解和掌握C/C++语言的关键所在。...