黑马程序员技术交流社区

标题: char *name问题 [打印本页]

作者: 77媛儿    时间: 2014-3-18 17:35
标题: char *name问题
char *name;是8个字节。
理论上是 char name1[100]="abcdefgetgadsa"
name=name1[0]; //这个是地址,所以是8个字节,是这样吧
另外、char *name=“badasasd”怎么定义一个指针就能代表一个字符串了,这玩意怎么自动往下输出的 原理忘了

作者: 周宇华    时间: 2014-3-21 00:03
char *name;是8个字节。
理论上是 char name1[100]="abcdefgetgadsa"
name=name1[0]; //这个是地址,所以是8个字节,是这样吧
另外、char *name=“badasasd”怎么定义一个指针就能代表一个字符串了,这玩意怎么自动往下输出的 原理忘了

name=name1[0];这个是错误的。name是char*指针,而name1[0]是数组的第一个元素'a'。
name1才是数组的首地址,所以应是name=name1;
char *name=“badasasd”这样定义的意思是name指针指向常量字符串“badasasd”的首地址。
输出的话,输出原理是从给的地址开始打印直到遇到结束符'\0'为止。
作者: Hi围城    时间: 2014-3-21 18:46
//指向字符串的指针存储的是字符串首字符的地址, 通过遍历实现连续输出。
#include <stdio.h>
#include <string.h>
int main()
{
    char *name = "badasasd";
    for(int i = 0; i<strlen(name); i++)
        printf("%c", *(name+i));
    return 0;
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2