。。。你函数都用错了,不要用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语言 获取字符型指针长度的问题、如何获取指针字符串的长度、如何定义指针大小呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)