C语言 获取字符型指针长度的问题

C语言 获取字符型指针长度的问题,第1张

。。。你函数都用错了,不要用fgets读取文件里的单词,用fscanf(infile,"%s",buffer),根据%s的特性,这个语句只会读取单词,不会读取空格,另外你的标题。我没看懂,获取字符型指针长度? 这个指针长度你是获取不了的,因为指针存的是地址,那么任何一个类型的数据都可能会放在地址很大的内存上,所以对于指针来说,要求就是必须能容纳下很大的地址,所以不管是指向哪个类型的指针 他们占的字节都是一样的,而且是4个字节

SizeOf是一个获得某个对象变量或数据类型在内存中所占字节的函数

指针变量的sizeof值与指针所指的对象内容是没有任何关系的,因为同一类型的指针变量所占内存大小都是相等的。

所以

char pc = "abc";

char pi="dfewr";

char ps="erwqrerweqr";

sizeof( pc ); // 结果为4

sizeof( pi ); // 结果为4

sizeof( ps); // 结果为4

如果你要取得一个字符串的长度(不包括结束符\0),应该使用字符串处理函数 strlen

int size=strlen(p)

在C语言中指针到底是干什么的??指针获取了指向对象的内存地址。至于设置大小,没听说过,

在定义指针时,用int p,则p只能接受int型的数据地址。

C++中可以通过new来为指针分配空间

如 int p = new int[20],则相当于声明了一个存储20个int数据的int型数组,和直接声明数组不同,这是动态分配的。

Type Tmp = reinterpret_cast<Type>(ptr);你可以试试,没有任何人知道内存有多大,你只能知道你在用什么类型去使用这个内存,而那个类型的大小你是知道的(编译器会帮你计算的)

虽然你定义了结构体,但是不会为结构体的定义分配内存的,分配内存的是结构体的对象,或者说实例,因此,你能知道的是如果申明使用这个结构体会分配多少内存,只需要声明一个对象,然后再查看这个对象的大小就能打到你的目的了:siziof(struct xx), xx就是你定义的结构体的一个对象

我一般用C++就说new吧,malloc就格式有些差别

new type[length](initialization);    //length是数组长度,如果动态分配数组填入,不是省略即可

p=new int[7]();    //int p;

size_t SIZE=sizeof (p);    //获取内存大小,sizeof char;恒为1

1  、定义数组,要给定其长度,也可以用Type a[ ] = {……} 的方式。

在对数组进行 *** 作时,可能需要计算数组长度,方法是:sizeof(数组名)/sizeof(元素类型)

2、指针指向的字符数组长度的获取方法,不能用sizeof,因为用sizeof(指针),得到指针长度为4

应该用strlen()函数。

#include <iostreamh>

#include <stringh>

int num(char ptr)

{

     int bb = strlen(ptr);

     return bb;

}

int main()

{

     char p= new char[100];

     p = "string";

     int b = num(p);

     cout<<b<<endl;

     return 0;

}

以上就是关于C语言 获取字符型指针长度的问题全部的内容,包括:C语言 获取字符型指针长度的问题、如何获取指针字符串的长度、如何定义指针大小呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9418120.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存