[黑马IOS自学第六篇]C语言指针,数组指针,字符指针学习

这篇博客详细介绍了C语言中的指针概念,包括字符指针、不安全的字符数组操作、字符串连接函数strcat的使用。同时,讨论了地址的概念,指针的定义、初始化和赋值,并通过实例展示了如何通过指针进行变量交换。此外,还涉及到了数组指针、逆序输出和二维数组的指针操作。最后,提到了字符串指针定义时的注意事项。
摘要由CSDN通过智能技术生成

一.指针概念

《c 程序设计语言》 是这样描述 : ”指针是一种保存变量地址的变量“,指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址,指针与地址不要混在一起,指针是存储地址一个变量,地址是内存分配。指针可以指向这个内存地址,也可以指向另一个内存地址,当指针指向一个内存地址,它们之间才发生联系,通过这个指针去操作这块内存。


1).字符指针

 char str[10] ="abcd";
    
    printf("%s\n",str);
    
    printf("%s\n",&str[0]);
    
     char str2[10] = "abc\0d";
    printf("%s\n",str2);
    
    char ch[6]={'a','a','s','n','x'};
    printf("%s\n",ch);
    return 0;
 
 //2.以%S进行输入
    char input[20];
    scanf("%s",input);
    printf("%s\n",input);
    //注意 %s格式输入的时候遇到空格,就结束了
    
 //字符数组长度
    char str[]="abc";
   printf("%ld\n",sizeof(str)/sizeof(char));//结果为 4
    
 %s输出字符直到遇到'\0'结束


2).不安全写法没有'\0'结束

   char ch[] = {'a','b','c'};//存在高地址
  
   char ch2[] = {'x','y','z'};//低地址
   printf("%s\n",ch2);//结果xyzabcabc
    
   char ch3[] = {'u','v','\0'};
   printf("%s\n",ch3);//结果uv

   

  

3).字符数组长度 恰巧等于了数组在内存中占用的字节数

   

 char str[]="abc";//4
   printf("%ld\n",sizeof(str)/sizeof(char));//结果为 4
    
    //字符数组长度
    char str1[]="abc\0989";//8
   printf("%ld\n",sizeof(str1)/sizeof(char));//结果为 8
    
    //1、使用字符串函数
    printf("%ld\n",strlen(str1));
    
    //2.以'\0'作为条件,进行判断遇到'\0'结束
   
    int count = 0 ;
    while (str1[count]!='\0') {
       count ++ ;
    }
    printf("count = %d\n",count);

计算机生成了可选文字:gets std 10 21 22 23 D 24 25 //puts return ø; L 14 CIO Thread 4 main El D e Filter asxcsererfds warning: this program uses gets(), ssssss sssewee 22 (Udb) All Output C h - (char 'ssssss sssewee 22 Auto C which is unsafe.

 

4).连接字符串strcat

    char str2[200]="welcometo ";
    char str3[100]="shenzhen!";
    strcat(str2, str3);//str2要足够大能够保存 str3
    puts(str2);
 



 因为代码在return0 ;后出现图片错误

 

5).字符串的比较函数

    int result =strcmp(str2,ch);//返回22大于0说明str2和 ch不同单词首字母的ACSII码值大于 ch
    printf("strcmp(%s,%s)= %d\n",str2 ,ch,result);

//  c10计算大写字母出现的次数
//
// Created by CHINGWEI_MACPC on 15/10/26.
//  Copyright © 2015年 itcast. All rights reserved.
//
 
#include<stdio.h>
 
int main(intargc,const char* argv[]) {
    
    char str[100]="Asss QQQ09UUsaA";
    int  count = 0 ,capitalLetters = 0 ;
    while (str[count]!='\0') {
       if (str[count]+32 >= 97 &&str[count]+32 <= 122) {
           capitalLetters++;
           }
       count++;
    }
    
   printf("一共有 %d 个大写字母.\n ",capitalLetters);
    
    
    return 0;
}
 
#include<stdio.h>
 
int main(intargc,const char* argv[]) {
    
    char str[100];
    
    gets(str);
    int spaceInt = 0 ,count = 0 ,flag = 0 ;
    while (str[count]!='\0') {
       
       if (str[count]==' ') {
           spaceInt++;
           flag = 0 ;
       }
       else if(flag== 0){
           str[count]=str[count]-32;
           flag = 1 ;
       }
       count++ ;
    }
    
    puts(str);
    
    
    return 0;
}
 

  

二.地址概念

存储

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值