`
plussai
  • 浏览: 90683 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

指针,数组,sizeof

阅读更多
最近要百度面试,压力有点大。。。复习一下
已知 char *str1="absde";
     char str2[]="absde";
     char str3[8]={'a',};
     char ss[] = "0123456789";

sizeof(str1)=4
sizeof(str2)=6;
sizeof(str3)=8;
sizeof(ss)=11

首先说明一点,char类型占一个字节,所以sizeof(char)是1,这点要理解

str1是一个指针,只是指向了字符串"absde"而已。所以sizeof(str1)不是字符串占的空间也不是字符数组占的空间,而是一个字符型指针占的空间。所以sizeof(str1)=sizeof(char*)=4,在C/C++中一个指针占4个字节

str2是一个字符型数组。C/C++规定,对于一个数组,返回这个数组占的总空间,所以sizeof(str2)取得的是字符串"absde"占的总空间。"absde"中,共有a b s d e \0六个字符,所以str2数组的长度是6,所以sizeof(str2)=6*sizeof(char)=6

str3已经定义成了长度是8的数组,所以sizeof(str3)为8

str4和str2类似,'0' '1' ... '9'加上'\0'共11个字符,所以ss占的空间是8

总之,对于指针,sizeof操作符返回这个指针占的空间,一般是4个字节;而对于一个数组,sizeof返回这个数组所有元素占的总空间。char*与char[]容易混淆,一定要分清,而且char*="aaa"的写法现在不被提倡,应予以避免
而strlen不区分是数组还是指针,就读到\0为止返回长度。而且strlen是不把\0计入字符串的长度的。
分享到:
评论

相关推荐

    C的指针数组和数组指针

    ### C的指针数组和数组指针详解 #### 指针基础概念 在学习“指针数组”和“数组指针”的概念之前,我们首先需要理解什么是“指针”。指针是一种数据类型,用于存储内存地址。在C语言中,指针变量的类型决定了它...

    C语言指针数组专项分析图示讲解

    C语言指针数组专项分析图示讲解 本文详细讲解了指针数组的使用方式以及其原理,及一些内存开辟函数的使用方法及原理。通过对指针数组的学习,我们需要了解指针及内存开辟函数。 首先,指针数组是指一个数组中每一...

    指针数组和数组指针的区别.doc

    ### 指针数组与数组指针的区别 #### 一、基本概念介绍 在C/C++编程语言中,指针是一种十分重要的数据类型,它能够直接处理内存地址,实现高效的数据访问与操作。而在指针的基础上,衍生出了两种常见的结构:指针...

    C语言34:用指针数组作为函数的参数显示多个字符串.rar

    本主题将深入探讨如何使用指针数组作为函数参数来显示多个字符串。指针数组结合了指针和数组的特性,使我们能够灵活地处理一系列相关的数据。 首先,我们要理解指针的基本概念。指针是一个变量,它存储的是另一个...

    c语言指针数组-·详解数组指针与指针数组

    在C语言中,指针和数组是两种非常重要的数据结构,它们可以组合成“指针数组”或“数组指针”,这为处理复杂的数据结构提供了灵活性。本文将深入讲解这两种概念。 一、数组指针与指针数组的区别 1. 数组指针:数组...

    彻底了解指针数组,数组指针以及函数指针

    ### 彻底了解指针数组、数组指针以及函数指针 #### 一、指针与内存分配 在C语言中,指针是一种非常重要的数据类型,它存储的是其他变量或对象的地址。掌握指针的基本概念对于深入理解C语言至关重要。本文将详细...

    指针数组_指针数组_

    而指针数组则是指针概念的一个扩展,它是一个数组,其每个元素都是一个指针。这个主题是理解和掌握C/C++高级特性的重要一环,对于初学者来说具有一定的挑战性,但也是必不可少的知识点。 **指针数组的基础概念** ...

    c语言指针数组

    这里主要涉及指针数组的概念、指针与一维数组之间的转换方法,以及如何利用这些特性来实现数组元素的操作,如删除等。 ### C语言指针数组 在C语言中,指针是一个非常重要的概念,它用来存储变量的内存地址。而指针...

    C语言指针数组教程 2.zip_C语言的高质量教程

    2. 分配和初始化:分配一个动态指针数组需要使用`malloc()`或`calloc()`函数,例如`int **arr = (int **)malloc(sizeof(int *) * n);`分配了一个指向`n`个`int`指针的数组。 3. 使用:指针数组可以用来存储多个内存...

    指针 指针变量运算 指针数组相关

    指针变量运算与指针数组相关知识点 指针变量是C语言编程中一个非常重要的概念,它允许我们直接访问和操作内存中的数据。指针变量是存储了数据地址的一种变量,它可以是数组、字符串、函数或普通变量的地址。 1. ...

    单片机C语言源码学习参考-用指针数组作为函数的参数显示多个字符串.zip

    本资料包“单片机C语言源码学习参考-用指针数组作为函数的参数显示多个字符串.zip”着重讲解了如何利用指针数组作为函数参数来实现多个字符串的显示。这种技术在单片机应用中十分常见,例如在用户界面或者信息输出时...

    数组与指针区别(很全面)

    ### 数组与指针的区别详解 #### 一、引言 在C/C++编程语言中,数组和指针是两种非常重要的数据结构。虽然它们在某些方面存在相似性,但本质上有着显著的区别。本文旨在澄清关于数组名是否等同于指针这一常见的误区...

    5152单片机proteus仿真和源码用指针数组作为函数的参数显示多个字符串

    在本篇文章中,我们将深入探讨如何利用5152单片机结合Proteus软件进行仿真,并通过使用指针数组作为函数参数的方式来显示多个字符串。此外,还将介绍如何通过百度网盘获取相关资源。 ### 一、5152单片机简介 5152...

    个人整理sizeof()用法汇总

    - `sizeof(*a)`返回一个3行6列的`double`指针数组的大小,即72字节(假设指针大小为4字节)。 - `sizeof(**a)`返回一列`double`指针数组的大小,即24字节(6个指针,每个4字节)。 - `sizeof(***a)`返回一个`...

    C语言培训 指针 数组 结构体 链表

    【C语言培训 指针 数组 结构体 链表】 C语言是一种强大的、低级别的编程语言,被广泛用于系统开发、嵌入式编程以及各种软件开发中。掌握C语言的关键在于理解和运用指针、数组、结构体和链表等核心概念。 **一、...

    c代码-9、有5个字符串,首先将它们按照字符串中的字符个数由小到大排列, 再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。要求:利用字符串指针和指针数组实现。

    这里我们将详细讨论如何利用字符串指针和指针数组来实现这一功能。 首先,我们需要定义一个字符串指针数组来存储这5个字符串的首地址。在C语言中,字符串实际上是以字符数组的形式存在的,因此,我们可以这样声明:...

    c语言中 数组名和指针的区别

    例如,在WIN32平台上,`sizeof`操作符用于获取对象或类型所占的字节数,对于数组名,它返回的是整个数组所占的字节数,而对于指针变量,它只返回指针本身的字节数(通常为4或8字节)。 #### 1.2 数组名神似指针 ...

    数组与指针应用详解,区别

    从 sizeof vận算符的返回值可以看出,数组名的大小是数组的大小,而指针的大小是指针的大小。例如,在 WIN32 平台下,指针的大小为 4 字节,而数组名的大小是数组的大小。 第二点,数组名可以作为指针常量。数组名...

    C/C++ 避免数组越界的方法

    此外,程序员也可以使用一些技术来避免数组越界,例如,使用 sizeof 运算符来获取数组的大小,然后使用这个大小来限制数组的访问范围。又如,使用指针的加减运算来访问数组中的变量,但需要确保指针的移动次数与数组...

Global site tag (gtag.js) - Google Analytics