总结了一些指针易出错的常见问题(三)

指针与字符串

  NULL和NUL区别:前者用来表示特殊的指针((void*)0),而NUL是一个char(\0),不可混用。

  字符常量:单引号;字符串:双引号;

  字符串的声明方式:字面量、字符数组、指针。

    字符串字面量池:

      

  字符串初始化 

    初始化char数组:   char header[]="Media Player";

    

    strcpy函数初始化数组

       char header[13];

      strcpy(header, "Meadia Player");

  2.初始化char指针

    char *header;初始化这个字符串的常见方法是使用malloc和strcpy函数分配内存并将字面量复制到字符串中。

      char *header=(char*) malloc(strlen("Media Player")+1);

         strcpy(header, "Meadia Player");

 

  区别sizeof与strlen:

  标准输入初始化字符串

  标准字符串操作

     

      

#include<stdio.h>
#include<stdlib.h>
#include"string.h"
int main()
{
     char* error="ERROR:";
     char* errorMessage="NOT Enough memory";
     char* buffer=(char*)malloc(strlen(error)+strlen(errorMessage)+1);
     strcpy(buffer,error);
     strcat(buffer, errorMessage);
    printf("%s",error);
    printf("%s\n",errorMessage);

 } 

传递字符串

  

#include<stdio.h>
#include<stdlib.h>
#include"string.h"

size_t stringLength(char* string)
{
    size_t length = 0;
    while(*(string++))
    {
        length++;
    }
    return length;
 } 
int main()
{
     char* error="ERROR: ";
     char* errorMessage="NOT Enough memory";
     char* buffer=(char*)malloc(strlen(error)+strlen(errorMessage)+1);
     strcpy(buffer,error);
     strcat(buffer, errorMessage);
    printf("%s\n",buffer);
    printf("%s\n",error);
    printf("%s\n",errorMessage);
    printf("%d\n",buffer);
    printf("%d\n",stringLength(buffer));
 } 

传递字符常量的指针

给应用程序传递参数

返回字符串

  函数返回字符串时,它返回的实际是字符串的地址。重点是如何返回合法的地址,可以返回以下三种对象之一的引用:字符量/动态分配的内存/本地字符串变量。

函数指针与字符串

posted @ 2016-06-22 20:32  QualityAssurance21  阅读(502)  评论(0编辑  收藏  举报