国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[C語言]strlen與sizeof的區別與聯系

2019-11-08 03:21:57
字體:
來源:轉載
供稿:網友

strlen

原型:size_t strlen( const char *string );   strlenC語言中的一個函數,用于計算字符串的(unsigned int型)長度,不包括’/0’在內。strlen所作的僅僅是一個計數器的工作,它從內存的某個位置(可以是字符串開頭,中間某個位置,甚至是某個不確定的內存區域)開始遍歷,直到碰到第一個字符串結束符’/0’為止,然后返回計數器值。    sizeof sizeof是關鍵字不是函數,sizeof操作符的結果類型是size_t,它在頭文件中typedef為unsigned int類型。

兩者之間的區別與聯系:   1.sizeof是操作符(關鍵字),strlen是函數。   2.sizeof可以用類型做參數,strlen只能用char*做參數,且必須是以”/0”結尾的。   sizeof還可以用函數做參數,比如:

short f()  3.數組做sizeof的參數不退化,傳遞給strlen就退化為指針了。 4.strlen的結果要在運行的時候才能計算出來,是用來計算字符串的長度,不是類型占內存的大小。而sizeof在程序編譯的過程中已經計算出來了。

下面我們來看一些有關數組與指針運算的例子:

int a[4]={1,2,3,4};printf("%d/n",sizeof(a)); //16,數組名單獨放在sizeof中代表整個數組大小printf("%d/n",sizeof(a+0); //4,a代表數組首元素的地址printf("%d/n",sizeof(*a));//4,*a代表首元素printf("%d/n",sizeof(a+1));//4,a+1代表第二個元素地址printf("%d/n",sizeof(a[1]));//4,代表第二個元素printf("%d/n",sizeof(&a)); //4,數組的地址,地址的大小在32位平臺為4printf("%d/n",sizeof(&a+1));//4,地址的大小printf("%d/n",sizeof(&a[0]));//4,首元素地址的大小printf("%d/n",sizeof(&a[0]+1));//4,第二個元素的地址printf("%d/n",sizeof(*&a));//16,整個數組大小char a[]={'a','b','c','d','e','f'};printf("%d/n",sizeof(a)); //6數組名單獨放在sizeof中代表整個數組大小printf("%d/n",sizeof(a+0));//4,a代表數組首元素的地址printf("%d/n",sizeof(*a));//1,*a代表首元素printf("%d/n",sizeof(a[1]));//1,代表第二個元素printf("%d/n",sizeof(&a)); //4,數組的地址,地址的大小在32位平臺為4printf("%d/n",sizeof(&a+1));//4,地址的大小printf("%d/n",sizeof(&a[0]+1));//4,第二個元素的地址 printf("%d/n", strlen(a)); //隨機值 printf("%d/n", strlen(a + 0)); //隨機值 printf("%d/n", strlen(*a)); //崩潰 printf("%d/n", strlen(a[1])); //崩潰 printf("%d/n", strlen(&a)); //隨機值 printf("%d/n", strlen(&a + 1)); //隨機值 printf("%d/n", strlen(&a[0] + 1)); //隨機值char *a="abcdef";printf("%d/n",sizeof(a)); //4printf("%d/n",sizeof(a+0));//4printf("%d/n",sizeof(*a));//1,printf("%d/n",sizeof(a[1]));//1,printf("%d/n",sizeof(&a)); //4,printf("%d/n",sizeof(&a+1));//4printf("%d/n",sizeof(&a[0]+1));//4 printf("%d/n", strlen(a)); //6 printf("%d/n", strlen(a + 0)); //6 printf("%d/n", strlen(*a)); //崩潰 printf("%d/n", strlen(a[1])); //崩潰 printf("%d/n", strlen(&a)); //隨機值 printf("%d/n", strlen(&a + 1)); //隨機值 printf("%d/n", strlen(&a[0] + 1)); //隨機值
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呼和浩特市| 晋城| 井冈山市| 湘潭县| 武夷山市| 龙门县| 黄冈市| 淳安县| 本溪| 峨眉山市| 房山区| 吉安市| 广德县| 佛坪县| 读书| 九龙坡区| 桑日县| 兴文县| 伊宁市| 双流县| 左云县| 浦县| 浏阳市| 龙井市| 崇明县| 韶关市| 双江| 宣恩县| 蕉岭县| 环江| 临朐县| 衡南县| 庐江县| 金山区| 龙泉市| 龙海市| 慈利县| 兴安盟| 平舆县| 阳原县| 大冶市|