кодесурса
«C

Упражнения на C: Показать указатель на массив, содержимое которого является указателем на структуру

script1adsense2code
script1adsense3code

Указатель C: упражнение 20 с решением

Напишите программу на C, чтобы показать указатель на массив, содержимое которого является указателем на структуру.

Иллюстрированная презентация:

«C

Пример решения:

Код C:

#include <stdio.h>
struct employee
{
char *empname;
int empid;
};
int main()
{
 	printf("\n\n Pointer : Show a pointer to an array which contents are pointer to structure :\n"); 
	printf("-----------------------------------------------------------------------------------\n");
	static struct employee emp1={"Jhon",1001},emp2={"Alex",1002},emp3={"Taylor",1003};
	struct employee(*arr[])={&emp1,&emp2,&emp3};
	struct employee(*(*pt)[3])=&arr;
	printf(" Exmployee Name : %s \n",(**(*pt+1)).empname);
	printf("---------------- Explanation --------------------\n");
	printf("(**(*pt+1)).empname\n");
	printf("= (**(*&arr+1)).empname   as pt=&arr\n");
	printf("= (**(arr+1)).empname     from rule *&pt = pt\n");
	printf("= (*arr[1]).empname       from rule *(pt+i) = pt[i]\n");
	printf("= (*&emp2).empname        as arr[1] = &emp2\n");
	printf("= emp2.empname = Alex       from rule *&pt = pt\n\n");
	printf(" Employee ID :  %d\n",(*(*pt+1))->empid);	
	printf("---------------- Explanation --------------------\n");
	printf("(*(*pt+1))-> empid\n");
	printf("= (**(*pt+1)).empid     from rule -> = (*).\n");
	printf("= emp2.empid = 1002\n");
	printf("\n\n");
	return 0;
}

Пример вывода:

 Указатель: показать указатель на массив, содержимое которого является указателем на структуру:                               
-------------------------------------------------- ---------------------------------                           
 Имя сотрудника: Алекс                                                                                        
---------------- Пояснение --------------------                                                             
(** (* пт + 1)). EmpName                                                                                           
= (** (* & arr + 1)). empname as pt = & arr                                                                          
= (** (arr + 1)). empname из правила * & pt = pt                                                                 
= (* arr [1]). empname из правила * (pt + i) = pt [i]                                                           
= (* & emp2) .empname as arr [1] = & emp2                                                                   
= emp2.empname = Алекс из правила * & pt = pt                                                                 
                                                                                                              
 ID сотрудника: 1002                                                                                          
---------------- Пояснение --------------------                                                             
(* (* pt + 1)) -> empid                                                                                            
= (** (* pt + 1)). empid из правила -> = (*).                                                                   
= emp2.empid = 1002 

Блок - схема:

«Блок-схема:

Редактор кода программирования C:

Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.

Previous: написать программу на C, чтобы показать указатель на union.
Далее: написать программу на C для печати всех алфавитов с помощью указателя.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code