1. 一维数组
数组名称可以作为数组的首地址使用,即a[10]来说,a = &a[0]。a可以直接赋值给指针变量,如 int* p = a(或写成 p = &a[0]),即把数组a[10]的首地址赋给p
# include
void print ( int b[ ] , int len)
{
int i;
for ( i = 0 ; i < len; i++ )
{
printf ( "a[%d] = %d\n" , i, b[ i] ) ;
}
b[ 4 ] = 20 ;
}
int main ( )
{
int a[ 10 ] = { 1 , 2 , 3 , 4 , 5 } ;
print ( a, 5 ) ;
printf ( "a[4] = %d\n" , a[ 4 ] ) ;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
2. 字符数组(字符串)
%c 是输入单个字符,%s是输入一个字符串到字符数组里 %c可以识别空格和换行符并将其输入,%s通过空格或换行识别一个字符串的结束 字符数组(字符串)名称本身就代表这个数组的第一个元素的地址,所以在scanf中不需要加取地址运算符 字符数组是由若干个char类型的元素组成,所以字符数组的每一位都是char型的字符。数组末尾都会有一个空字符\0 ,表示存放的字符串的结尾。
# define _CRT_SECURE_NO_WARNINGS
# include
int main ( )
{
char c[ 6 ] = { 'h' , 'e' , 'l' , 'l' , 'o' } ;
char d[ 5 ] = "how" ;
printf ( "%s---%s\n" , c, d) ;
char e[ 20 ] , f[ 20 ] ;
scanf ( "%s%s" , e, f) ;
printf ( "%s---%s\n" , e, f) ;
}
3. 字符数组的传递
%c可以识别空格和换行符并将其输入,%s通过空格或换行识别一个字符串的结束 ,即
# define _CRT_SECURE_NO_WARNINGS
# include
void print ( char d[ ] )
{
int i = 0 ;
while ( d[ i] != '\0' )
{
printf ( "%c\n" , d[ i] ) ;
i++ ;
}
printf ( "\n" ) ;
d[ 0 ] = d[ 0 ] - 32 ;
}
int main ( )
{
char c[ 10 ] = "hello" ;
print ( c) ;
printf ( "%s\n" , c) ;
return 0 ;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
4. gets与puts
# define _CRT_SECURE_NO_WARNINGS
# include
int main ( )
{
char c[ 20 ] ;
fgets ( c, sizeof ( c) , stdin ) ;
gets ( c) ;
puts ( c) ;
return 0 ;
}
5. string函数使用
strlen():得到字符数组中第1个\0之前的字符的个数 strcmp():返回两个字符串大小的比较结果,比较原则是按字典序 ,越靠后值越大 strcpy():把一个字符串赋值给另一个字符串 strcat():把一个字符串接到另一个字符串后面
# define _CRT_SECURE_NO_WARNINGS
# include
# include
int main ( )
{
char c[ 20 ] = "wangdao" ;
printf ( "数组c内字符串的长度=%d\n" , strlen ( c) ) ;
char d[ 20 ] ;
strcpy ( d, "study" ) ;
puts ( d) ;
printf ( "两个字符串比较后的结果=%d\n" , strcmp ( "hello" , "world" ) ) ;
strcat ( c, d) ;
puts ( c) ;
return 0 ;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23