(*p) . sex =
p->sex =
指针可以作为函数参数
一般指针,数组,结构体指针 作为函数参数
传值与传址
// 结构体指针
// Mycar car1 = { "奥迪" , 888 , 'b'};
// Mycar car2 = { "大众" , 288 , 'b' } ;
// Mycar car3 = { "保时捷" , 188 , 'b'} ;
printf( " %s \n %.2f \n %c\n " , car1.brand ,car1.price ,car1.color);
Mycar *p1 = &car1;
printf( "%s\n %.2f\n %c\n " , p1 ->brand , p1->price , p1->color);
// Mycar car[3] = { car1 ,car2 , car3 } ;
// Mycar * p = car ;
p[2] . brand = "路虎";
(p + 2 ) -> brand = " 路虎" ;
//
// cp9(car, 3);
// for ( int i = 0 ; i < 3 ; i ++ ) {
// printf( " %s\n %.2f\n %c\n " , p ->brand , p->price , p->color);
// p ++ ;
// }
void cp9( Mycar * array , int count )
{
for ( int i = 0 ; i < count ; i ++ ) {
if (array[i] . price > 200 ) {
strcat(array[i] . brand , "S");
}
}
}
// 交换地址
// int a = 3 , b = 5 ;
// int * p1 = &a ;
// int * p2 = &b ;
// printf( " %p %p \n" , p1 ,p2 ) ;
int * temp = p1;
p1 = p2 ;
p2 = temp ;
printf( " %p %p \n" , p1 ,p2 ) ;
// change(&p1, &p2);
// printf( " %p %p \n" , p1 ,p2 ) ;
// printf( " %d %d \n" , a ,b ) ;
void change (int ** a , int ** b )
{
int * temp = *a;
*a = *b ;
*b = temp ;
}
1、输⼊入10个整数,将其中最小的数 与第一个数对换,把最⼤大的数和最后 一个数对换,写3个函数:(1)输⼊ 10个数;(2)进⾏行处理;(3)输 出10个数。
2、在主函数中输⼊入10个等长的字符 串。用另一个函数对它们排序,然后 在主函数输出10个已经排好的字符 串。
面试题
有一字符串,包含数字与字母,编程去除数字。
1、要求在原字符串中操作 2、使用指针处理。
1、主函数创建5个学生的数组,写一 个排序函数,让学生按姓名从小到大 排序,主函数输出排序后的结果.
2、写一个整型数组排序的函数,并 测试效果
3、预习动态内存分配
// printf( " 面试题 : \n\n\n" ) ;
// char array[20] = "hello3g4sg";
// char * p = array;
// int i = 0 ;
// while (*(p+i) != '\0') {
// if (*(p+i) >= '0' && *(p+i) <= '9') {
// int j = i ;
// while (*(p+j) != '\0') {
// p[j] = p[j+1] ;
// j ++ ;
// }
// }
// i ++ ;
// }
// int k = 0 ;
// while (*(p+k) != '\0') {
// printf( " %c" , p[k]);
// k ++ ;
// }
// printf( "\n");
// 实心菱形~~~~
// int m = 0 ;
// scanf("%d" , &m) ;
// for ( int i = 0 ; i < m ; i ++ ) {
// for ( int j = 0 ; j < m-i ; j ++ ) {
// printf( " ") ;
// }
// for ( int j = 0 ; j <=2 * i ; j ++ ) {
// printf( " *" ) ;
// }
// printf( "\n");
// }
// for ( int i = 0 ; i
// for ( int j = 0 ; j <= i +1; j ++ ) {
// printf( " ");
// }
// for ( int j = 2 * m - 2 * i -3 ; j >0 ; j -- ) {
// printf( " *");
// }
// printf( " \n");
// }
// 空心菱形
// int m = 0 ;
// scanf("%d" , &m) ;
// for ( int i = 0 ; i < m ; i ++ ) {
// for ( int j = 0 ; j < m-i ; j ++ ) {
// printf( " ") ;
// }
// for ( int j = 0 ; j <=2 * i ; j ++ ) {
// if (j == 0 || j == 2 * i )
// printf( " *" ) ;
// else printf( " ");
// }
// printf( "\n");
// }
// for ( int i = 0 ; i
// for ( int j = 0 ; j <= i +1; j ++ ) {
// printf( " ");
// }
// for ( int j = 0 ; j<= 2 * m - 2 * i - 4 ; j ++ ) {
// if (j == 0 || j == 2 * m - 2 * i - 4 ) {
// printf( " *");
// }
// else printf( " ");
// }
// printf( " \n");
// }
// 2、在主函数中输⼊入10个等长的字符 串。用另一个函数对它们排序,然后 在主函数输出10个已经排好的字符 串。
// char * arr[10] = { "love","like" ,"goto" ,"home" ,"town","suop","soar","want","done","work"};
// swaparr(arr, 10);
// for (int i = 0 ; i < 10 ; i ++ ) {
// for (int j = 0 ; j < 4 ; j ++ ) {
// printf( "%c" , *(arr[i] + j) );
// }
// printf( "\n");
// }
void swaparr(char * array[] , int count )
{
for ( int i = 0 ; i < count -1; i ++ ) {
for ( int j = 0 ; j < count -1-i ; j ++ ) {
if (strcmp(array[j], array[j+1]) > 0) {
char *temp = array[j] ;
array[j] = array[j+1] ;
array[j+1] = temp ;
}
}
}
}