关于malloc(sizeof(char)*(strlen(pDepartment)+1))

问题描述

关于malloc(sizeof(char)*(strlen(pDepartment)+1))

malloc(sizeof(char)*(strlen(pDepartment)+1)) 这句 写成“:
malloc(strlen(pDepartment)+1)) 不就好了, 干嘛要用sizeof 呢 ,看着费解。
我这样做正确吗?

解决方案

ansi c规定,sizeof(char) = 1。因此,符合标准的C编译器,两者结果一样。但是也不排除有那么一些另类的编译器有什么不同。但是我没见过。

解决方案二:

对于char 类型,(16,32,64)位的编译器都是占一个字节

时间: 2024-10-29 21:50:03

关于malloc(sizeof(char)*(strlen(pDepartment)+1))的相关文章

Sizeof与Strlen的区别与联系

转自http://www.cnblogs.com/carekee/articles/1630789.html 一.sizeof     sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.     它的功能是:获得保证能容纳实现所建立的最大对象的字节大小.     由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.实际上,用sizeof来返回类型以及静态分配的对象.结构或数组所

[面试题]sizeof与strlen的区别

例题: constchar *p = "Hello World"; char p[] = "Hello World";分别求长度和所占用空间大小,有啥区别? 答:求长度都可以用strlen(p),求占内存空间大小第一个不能用sizeof,第二个可以用sizeof 另外:第二个:strlen(p) = 11, sizeof(p) = 12 举一反三: l   sizeof     sizeof(...)是运算符,在头文件中typedef为unsigned int,其值

sizeof 和 strlen;gets 和 %s

这是一个ACMer总是遇到的问题,但是这个问题却特别常见,因为只要是想搞ACM就必然会遇到恶心的字符串题目 这类题通常不难,但是特别恶心~~~~~~  呕~~~~~ 为什么说恶心呢,因为字符串的输入和输出不好控制,复制字符数组给其他的字符串也比较麻烦,难怪我以前的老师说过:"字符串在c语言里面没有受到公平的待遇,相当于数据结构中的奴隶...",好了,下面我写的一段小程序就得出了字符串的奥秘:sizeof 和 strlen:gets 和 %s的区别和联系: #include <st

基于Sizeof与Strlen的区别以及联系的使用详解_C 语言

一.sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小.    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.实际上,用sizeof来返回类型以及静态分配的对象.结构或数组所占的空间,返回值跟对象.结构.数组所存储的内容没有关系.    具体而言,当参数分别如下时,sizeof返回的值表示

C语言中sizeof()与strlen()函数的使用入门及对比_C 语言

sizeof()函数1,是什么?     sizeof其实就是一个运算符,和那些+,-一样的东西,在程序编译的时候进行解析转换.虽然我们经常见到sizeof后面跟着个小括号,长得和函数差不多,但它和函数完全是两码事. 2,有什么用?     sizeof其实就是用于告诉我们编译器在为某一特定数据或者某种数据类型的数据在存储空间中开辟空间时,开辟的空间大小,以字节为单位. 3,怎么用?     sizeof(类型),或者sizeof(变量)都可以,得到的就是类型或者变量的存储空间.当对变量用的时候

C语言中关于sizeof 和 strlen的区别分析_C 语言

1.编译时计算运算符sizeof,可用类型或变量做参数,计算占用内存的大小.sizeof后若是类型必须加括弧,若是变量名可不加括弧.sizeof(x)可用来定义数组维数如: 复制代码 代码如下: printf("%d\n", sizeof(short));     输出的结果为短整型的长度2.用结构类型或变量做参数时,sizeof 返回实际的大小,当用于静态数组时,sizeof 返回全部数组的尺寸.sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸 2.运行时计算str

type sizeof: char, short, int, long, float, double and prefix unsigned, long

C的自定义类型比较少, 占用字节数可以使用sizeof 操作符来获取.char, short, int, long, float, double char 实际存储为数字.占用1字节. 可使用的前缀 : unsigned, long 下面在一台64位的LINUX上得到的结果 : [root@db-172-16-3-150 zzz]# cat n.c #include <stdio.h> #include <string.h> #include <unistd.h> #i

sizeof和strlen与带汉字字符的

1 //输出10 和 9 2 #include <iostream> 3 #include <cstring> 4 using namespace std; 5 6 int main() 7 { 8 char p[] = "12中国abc"; 9 int ans = sizeof(p); 10 int len = strlen(p); 11 cout<<ans<<" "<<len<<endl;

C中的继承和多态

1.引言 继承和多态是面向对象语言最强大的功能.有了继承和多态,我们可以完成代码重 用.在C中有许多技巧可以实现多态.本文的目的就是演示一种简单和容易的技术,在C中应用继承和多态.通过创建一个VTable(virtual table)和在基类和派生类对象之间提供正确的访问,我们能在C中实现继承和多态.VTable能通过维护一张函数表指针表来实现.为了提供基类和派生 类对象之间的访问,我们可以在基类中维护派生类的引用和在派生类中维护基类的引用. 2.说明 在C中实现继承和多态之前,我们应该知道类(