Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Связь указателей и массивов. Указатели и массивы в языке С тесно связаны между собой



Указатели и массивы в языке С тесно связаны между собой. Имя массива является указателем на его первый элемент, т.е. для массива int v [10] v и v [0] имеют одинаковые значения, т.к. адрес первого (с индексом 0) элемента массива - это адрес начала последовательно расположенных элементов массива. Рассмотрим обращение к элементам массива на примере. Пусть объявлены - массив из 100 объектов типа float и указатель на объект типа float:

float p[100];

float *q;

int i;

если выполнить операцию q=p; то обращения к элементу массива p: p[i], *(q+i) и *(p+i) эквивалентны.

Таким образом, для любых указателей можно использовать две эквивалентные формы выражений для доступа к элементам массива: q[i] и *(q+i). Первая форма удобнее для читаемости текста, но вторая обычно эффективнее по быстродействию программы.

Очевидна эквивалентность выражений

&q[0] <-> &(*q) <-> q

*q <-> q[0]

Пример 1: Упорядочить по алфавиту массив строк (не более 20) длиной не более 10 символов в каждой.

#include<conio.h>

#include<stdio.h>

#include<string.h>

void main()

{

char s[20][10],r[10];

int i,j,n;

clrscr();

puts(" Введите количество слов ";

scanf(“%d”,&n);

for(i=0;i<n;i++)

scanf("%s",&s[i]);

for(i=0;i<(n-1);i++)

for(j=(i+1);j<n;j++)

if(strcmp(s[i],s[j])>0)

{

strcpy(r,s[i]);

strcpy(s[i],s[j]);

strcpy(s[j],r);

}

for(i=0;i<n;i++)

printf("\n %s",s[i]);

getch();

}

Пример 2: Проверить, является ли введенная строка (не более 80 символов) палиндромом (справа налево читается так же, как и слева направо).

#include <stdio.h>

#include <string.h>

#include <conio.h>

void main(void)

{

char s[80],s1[80];

int i, k;

clrscr();

puts(" Введите исходную строку (не более 80 символов) ");

gets(s);

k=strlen(s);

puts(" Результаты работы программы ");

for (i=0; i<k; i++)

printf("%c",s1[i]=s[k-i-1]); // Переворачиваем строку s

s1[k]=’\0’; // Устанавливаем конец строки

printf(“ %s\n”,strcpy(s1,s)? ” YES - Pаlindrom!”:” NO!”)

printf("\n Press any key...");

getch();

}





Дата публикования: 2015-09-17; Прочитано: 201 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...