A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 77媛儿 中级黑马   /  2014-3-18 17:35  /  949 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

2 个回复

倒序浏览
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'为止。
回复 使用道具 举报
//指向字符串的指针存储的是字符串首字符的地址, 通过遍历实现连续输出。
#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;
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马