c语言字符串长度(指针专题)(指针刚入门,帮我写写,不要写太难看不懂的)

#include<stdio.h>
intlen(char*sp)
{
//实现sp所指串的长度,不计空格。
inti=0;
while(*sp!='')//遇到字符串结束符时,结束循环
{
if(*sp!='')i++;//不是空格时,累加长内度
sp++;//指针后移,指容向下一个字符
}
returni;//返回长度
}
voidmain()
{
charstr[100];
gets(str);//输入字符串
printf("%d ",len(str));//调用len()函数,输出长度值
}

⑵ 在C语言中一个指针占用多少字节。

一个指针变量在内存中占两个字节(small模式编译),一个指针变量在内存中占四个字节(32位机器上),一般都是32位机器的,所以四个字节咯。

指针即为地址,指针几个字节跟语言无关,而是跟系统的寻址能力有关。

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值或者叫指针所指向的内存区、指针本身所占据的内存区。

(2)c语言指针长度扩展阅读

1、指针的类型

从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型:

(1)int*ptr;//指针的类型是int*

(2)char*ptr;//指针的类型是char*

(3)int**ptr;//指针的类型是int**

(4)int(*ptr);//指针的类型是int(*)

(5)int*(*ptr);//指针的类型是int*(*)

2、指针所指向的类型

当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。

从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。例如:

(1)int*ptr; //指针所指向的类型是int

(2)char*ptr; //指针所指向的的类型是char

(3)int**ptr; //指针所指向的的类型是int*

(4)int(*ptr); //指针所指向的的类型是int()

(5)int*(*ptr); //指针所指向的的类型是int*()

⑶ C语言指针长度具有多少

这里 栈底比栈顶要大。
所以 已经出现循环。
长度为50
那么 元素就是49 0 1 2 ... 29
所以 元素个数应该是30

如果反过来,bottom = 30 top=49
那么栈内才是19个元素。

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

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

⑸ C语言的指针和strlen,sizeof的问题。

前面你说对了,但后面
char *p = "abcd";
k =strlen(p);
i = sizeof(p);
因为此时p是一个指针,所有类型的指针都占4个byte,所以无论p指向什么东西,sizeof(p)都占4个byte,而strlen(p)就为(串的长度-1),因为‘\0’不计算在内。

⑹ c语言求指针的长度

函数strlen()计算的是字符串含有的字符数,不包括结束符'\0',所以图片的答案是0。

⑺ c语言输入一串字符,输出字符长度用指针

#include<stdio.h>
#include<stdlib.h>

intlength(constchar*);
intmain()
{

charstr1[100],*p;//这里应是char型
inta;
p=str1;
gets(str1);
a=length(p);
printf("%d ",a);
return0;
}

intlength(constchar*s)//此函数也作了修内改
{
intlen=0;
for(;*s!容='';s++)len++;
return(len);
}

⑻ c语言中行指针定义时长度可以是变量吗

赋初值,也就是初始化,只能在定义的时候操作,形式为
type var_name = init_value;
其中=init_value就是赋初值了。

赋值,是在定义后,改变变量的值,形式为
var_name = value;

二者的效果是类似的,都是把变量值改变。但在C语言中,编译出的代码有所区别。其中赋初值的效率会更高。

⑼ c语言计算字符串的长度(用指针)

#include&lt;cstdio&gt;

int main()

{

char s[20];

char*p;

printf("please input a string(less than 20 character): ");

//scanf("%s",s);不能读入空格

gets(s);

p=s;

while(*p!='')

p++;

printf("The string lenth is%d ",p-s);

return 0;

}

printf()函数的调用格式为:printf("&lt;格式化字符串&gt;",&lt;参量表&gt;)。

其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。

比如:

int a=1234;

printf("a=%d ",a);

输出结果为a=1234。

(9)c语言指针长度扩展阅读:

main()函数的可以包括两个参数

第一个参数的类型为int型;

第二个参数为字符串数组。

通常情况下,将第一个参数命名为argc,第二个参数为argv(当然参数名字可以换)。由于字符串数组有两种表达方式,因此,main函数存在两种书写方法:

1、形式一:

int main(int argc,char*argv[])//这里使用char*argv[]

{

return 0;

}

2、形式二:

int main(int argc,char**argv)//这里使用char**argv

{

return 0;

}

使用方法

参数的含义

int argc:表示字符串的数量argc=1+用户输入的字符串数目,操作系统负责计算数量,程序员不用管,只需要正确使用即可,例如用户输入2个字符串,argc=1+2=3;

char*argv[]:字符串的数组,即多个字符串,形式如下:

argv[0]=可执行文件名称,例如test.exe(非用户输入,操作系统根据可执行文件名称自动生成)

argv[1]=字符串1

argv[2]=字符串2

argv[3]=字符串3

⑽ C语言中指针的长度!

记住32位下的指针 都是4个字节可以简单的这么理解:一个基本的数据类型(包括结构体等自定义类型)加上“*”号就构成了一个指针类型的模子。这个模子的大小是一定的,与“*”号前面的数据类型无关。“*”号前面的数据类型只是说明指针所指向的内存里存储的数据类型。所以,在 32位系统下,不管什么样的指针类型,其大小都为 4byte。