2 marlous Marlous 于 2016.03.26 15:34 提问

关于C语言 指针数组的小问题

指针数组赋值(字符串)后,可以单独引用某一个字符串中的第X个字符(单个字符)吗?输出必须用%s 不能用%c ??

2个回答

qq423399099
qq423399099   Ds   Rxr 2016.03.26 15:55
已采纳

楼主是要这种吗?

 char *str[3] = {"skjf", "sd", "askjfssf"};
    printf("%c\n", str[0][3]); //打印出f
    printf("%c\n", *(str[2] + 3));//打印出j
Marlous
Marlous 回复小灸舞: 是的 我看的书上没说这种情况!定义成指针数组可以直接用二维来引用
2 年多之前 回复
w1eix1iao
w1eix1iao   2016.03.26 17:01

如果在编译器中定义了一个字符串常量"abc",那么这个字符串常量表示的是一个地址,也就是你可以使用"abc"[2]这样的方式来访问这个字符串(
2["abc"]的效果是一样,都是访问第3个字符)。
按照楼主的说法定义一个数组,那么数组中的每个元素都是一个字符串的首地址,可以使用我说的方法访问这个字符串的每个字符。
需要注意的是,这和c语言的二维数组的概念是不一样的,因为数组里面放的是每个字符串的首地址,并非真正的字符串。也就是说字符串的内存并没有包括在这个数组里面。值得一提的是,数组中每个元素的长度都是32bit(因为是指针)。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
一道关于二维数组和指针数组的C语言笔试题目
下面程序输出的结果是()
C经典 Char型指针数组与字符数组的区别
1.char 类型的指针数组:每个元素都指向一个字符串,指向可以改变char *name[3] = { "abc", "def", "gbk" }; for(int i = 0 ; i < strlen(name); i ++){ printf("%s\n", *(name+i)); //printf("%s\n", name[i]); }//指向改变 n
C语言学习笔记(18) 指针数组和数组指针分析
摘要:总结了指针数组和数组指针的定义,以及main函数的入口参数的意义,每一个部分给出一个例子加深理解。 一、三个问题    1.一维数组名代表了数组首元素的地址,二维数组名呢?     我的理解也是的,但是数组首元素的地址。     2.假设数组名为a,那么a和&a的地址值相同,意义不同,那么指向它们的指针类型相同吗?     答案是不同,这一点下面会解释到,因为a和&a的
C语言中指针数组作为参数传递修改内容
#include void change(char **strs){ strs[0] = "paaa"; strs[1] = "pbbb"; strs[2] = "cpcc"; strs[3] = "ddxd"; } int main() { char *strs[4]; int i; strs[0] = "aaa"; strs[1] = "bbb"; strs[2] =
C语言 指针和指针数组作main函数的形参
不带形参的main函数一般写成: int main() 或 int main(void) 表示mian函数没有参数,调用mian函数时不需要给出实参。而mian函数有形参的形式:int main( int argc, char** argv) int main( int argc, char *argv[]) 我是这样理解这两种方式,其中第一种方式 **argv是指针的指针,指针指向变量,指
C语言指针数组(每个元素都是指针)
如果一个数组中的所有元素保存的都是指针,那么我们就称它为指针数组。指针数组的定义形式一般为: dataType *arrayName[length]; [ ]的优先级高于*,该定义形式应该理解为: dataType *(arrayName[length]); 括号里面说明arrayName是一个数组,包含了length个元素,括号外面说明每个元素的类型为dataType *。
关于C语言中的数组指针、指针数组以及二级指针
概念解释数组指针:首先它是一个指针,它指向一个数组,即指向数组的指针;在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。数组指针指向的是数组中的一个具体元素,而不是整个数组,所以数组指针的类型和数组元素的类型有关。 指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称,即每个元素都是指针。 二级指针 : 如果一个指针指
c语言之交换一个指针数组的值
#include <string.h> #include<stdlib.h> #include <stdio.h> #define N 4 int main() { void sort(char *name[], int n); void print(char **name, int n); char *string[N]={"You are so handsome!!","
c语言实现动态指针数组Dynamic arrays
基本原理:事先准备好一个固定长度的数组。如果长度不够的时候,realloc一块区域。另外:在数组元素减少的情况下,需要缩减数组长度。
曾经进公司面试的C语言有关指针和数组的笔试题
原题如下: #include int main(void) { int i , j ; unsigned int Array_A[32]; unsigned int *pPointer; i = 0x0008 ; //测试i printf("i=%d\n",i) ; pPointer = Array_A ; *(pPointer++)=i++ ; //测试i pr