C语言typedef,const和随机数

typedef

#include <stdio.h>
typedef char (*PTR_TO_ARR)[30];
typedef int (*PTR_TO_FUNC)(int, int);
int max(int a, int b){
    
    
    return a>b ? a : b;
}
char str[3][30] = {
    
    
    "http://c.biancheng.net",
    "C语言中文网",
    "C-Language"
};
int main(){
    
    
    PTR_TO_ARR parr = str;
    PTR_TO_FUNC pfunc = max;
    int i;
   
    printf("max: %d\n", (*pfunc)(10, 20));
    for(i=0; i<3; i++){
    
    
        printf("str[%d]: %s\n", i, *(parr+i));
    }
    return 0;
}
运行结果:
max: 20
str[0]: http://c.biancheng.net
str[1]: C语言中文网
str[2]: C-Language

const

#include <stdio.h>
int getNum(){
    
    
    return 100;
}
int main(){
    
    
    int n = 90;
    const int MaxNum1 = getNum();  //运行时初始化
    const int MaxNum2 = n;  //运行时初始化
    const int MaxNum3 = 80;  //编译时初始化
    printf("%d, %d, %d\n", MaxNum1, MaxNum2, MaxNum3);
    return 0;
}
运行结果:
100, 90, 80
  • 在C语言标准库中,有很多函数的形参都被 const 限制了,下面是部分函数的原型:
size_t strlen ( const char * str );
int strcmp ( const char * str1, const char * str2 );
char * strcat ( char * destination, const char * source );
char * strcpy ( char * destination, const char * source );
int system (const char* command);
int puts ( const char * str );
int printf ( const char * format, ... );
#include <stdio.h>
#include <string.h>
size_t strnchr(const char *str, char ch){
    
    
    int i, n = 0, len = strlen(str);
    for(i=0; i<len; i++){
    
    
        if(str[i] == ch){
    
    
            n++;
        }
    }
   
    return n;
}
int main(){
    
    
    char *str = "http://c.biancheng.net";
    char ch = 't';
    int n = strnchr(str, ch);
    printf("%d\n", n);
    return 0;
}
运行结果:
3

根据 strnchr() 的功能可以推断,函数内部要对字符串 str 进行遍历,不应该有修改的动作,用 const 加以限制,不但可以防止由于程序员误操作引起的字符串修改,还可以给用户一个提示,函数不会修改你提供的字符串,请你放心。

#include <stdio.h>
void func(char *str){
    
     }
int main(){
    
    
    const char *str1 = "c.biancheng.net";
    char *str2 = str1;
    func(str1);
    return 0;
}78行代码分别通过赋值、传参(传参的本质也是赋值)将 const 类型的数据交给了非 const 类型的变量,编译器不会容忍这种行为,会给出警告,甚至直接报错。

C语言随机数

#include <stdio.h>
#include <stdlib.h>
int main(){
    
    
    int a = rand();
    printf("%d\n",a);
    return 0;
}
运行结果举例:
193
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
    
    
    int a;
    srand((unsigned)time(NULL));
    a = rand();
    printf("%d\n", a);
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
    
    
    int a;
    srand((unsigned)time(NULL));
    a = rand() % 51 + 13;
    printf("%d\n",a);
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
    
    
    int a, i;
    //使用for循环生成10个随机数
    for (i = 0; i < 10; i++) {
    
    
        srand((unsigned)time(NULL));
        a = rand();
        printf("%d ", a);
    }
    return 0;
}
运行结果举例:
8 8 8 8 8 8 8 8 8 8

猜你喜欢

转载自blog.csdn.net/yangtuoi/article/details/118677547