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。