-
这个函数是一个查找字符串长度的函数,字符串的末尾是 0x0,即 null,你正在查找整数数组的长度,你可以用 sizeof(la) sizeof(list) 找到它, 注意:因为sizeof是由编译器预处理的,所以不同的编译器可能会导致结果是指针长度和数组的长度, 以及 vc 下数组的长度。
int listlength(list *l)return count;
如果有什么不明白的地方,请通过baiduhi再问我。
-
#include
typedef int list;
int listlength(list *l) ,i;
i = listlength(la);
printf("%d", i);
首先,它允许您编译。
其次,你想错了。
查找数组的长度是 sizeof(la) sizeof(list) 错误的原因,p!=null 不正确,当 p 指向数组外时,p 仍然是有效地址,不能为 null。 所以它无法实现。
-
有两个错误:
list *p=l;
while (*p!=null)
纠正错误后,可以运行,但结果不是我想要的。
为什么?
因为这个算法是有问题的,所以无论 null 怎么改为'\0',或者其他问题。
除非它是一个字符串,但这是一个整数数组。
那么你真的需要知道数组的长度可以和 sizeof 函数一起使用。
-
1. 在 C 语言中,您可以在定义数组后使用 sizeof 命令获取数组的长度(可以容纳的元素数)。 例如:
int data[4];
int length;
length=sizeof(data)/sizeof(data[0]);数组占用的总内存空间除以单个元素占用的内存空间量。
输出长度 data[4]=42,但是,通过将数组名称参数传递给子函数来获取数组长度是不可行的。
例如:int getlength(int a) 因为,a 是一个函数参数,在这个函数中,a 只是一个指针(address,当系统运行在这个函数中时,它不知道 a 所代表的地址有多少数据存储空间,这里它只是告诉函数:一个数据存储空间的第一个地址), 因此,sizoef(a) 的结果是指针变量 A 在内存中的大小,在 32 位计算机上通常为 4 个字节。
a[0] 是 int 类型,sizeof(a[0]) 也是 4 个字节,所以结果总是在数组定义所在的 ** 区域使用上述方法才能实现数组的长度。
-
逻辑错误。
你是一个字符串,你不知道拆分的长度,所以 i<10 什么的,字符串长度默认为 9(因为 0 的问题)。
如果输入的字符超过 10 个,则会出现错误,如果 = 10,则会造成混淆。
这很可能是问题所在。
您的输入有问题。
图 = 9 案例。
积极因素包括
#include
int main()
char c1[10]=,c2[10]=,c[20]=;
scanf("%s%s",c1,c2);
int i,j;
for(i=0;i<=strlen(c1);i++)c[i]=c1[i];
for(i=0,j=strlen(c2);i<=strlen(c2);i++,j++)
c[j]=c2[i];
printf("%s",c1);
printf("%s",c2);
printf("%s",c);
return 0;
前两个 ** 确实说数组的长度是用变量定义的(稍后会详细介绍),但黑匣子中的 ** 不是,这是取 arr 数组的下标 i 的值并将其分配给 te - 这是一个合法的操作,无论 c 还是 c++。 纯 C 编译器不允许变量定义数组的长度,并且无法传递编译。 后来的 C++ 编译器允许这样做,但大多数用于定义数组长度的变量都应该用 const 修改,称为值不变量,但纯 C 编译器不允许定义数组的长度,即使变量用 const 修饰。 >>>More
你可以使用 strlen 函数来获取 C++ 中字符数组的长度,例如计算字符数组 a 长度的语句是 i=strlen(a)。 >>>More